【发布时间】:2015-03-01 17:54:42
【问题描述】:
我正在尝试使用密钥对加密来验证我的应用程序和我的 PHP 服务器之间的身份。为此,我需要在我的应用中生成公钥后将其发送到服务器。
if let pubKey = NSData(base64EncodedData: publicKey, options: NSDataBase64DecodingOptions.allZeros)! {
println(pubKey)
}
publicKey 的类型为 Unmanaged<SecKey>。
我在上面的代码中遇到的错误是:Extra argument 'base64EncodedData' in call
我该怎么做?有没有更好的办法?
编辑:这是生成密钥对的方式:
var publicKeyPtr, privateKeyPtr: Unmanaged<SecKey>?
let parameters = [
String(kSecAttrKeyType): kSecAttrKeyTypeRSA,
String(kSecAttrKeySizeInBits): 2048
]
let result = SecKeyGeneratePair(parameters, &publicKeyPtr, &privateKeyPtr)
let publicKey = publicKeyPtr!.takeRetainedValue()
let privateKey = privateKeyPtr!.takeRetainedValue()
let blockSize = SecKeyGetBlockSize(publicKey)
编辑 2: 所以问题是 SecKey 不是 NSData,所以我的问题应该是:如何将 publicKey:SecKey 转换为 NSData?
【问题讨论】:
-
publicKey 是如何定义的?它是 NSData 吗?
-
谢谢!我已经编辑了我的问题以提供更多信息。
-
我对此知之甚少,无法提供答案,但您可能会从这篇博文中学到一些东西:netsplit.com/…
-
谢谢!我其实快到了。一旦我弄清楚拼图的最后一块,就会发布我的答案......(编辑)不,我没有。但我会尽快更新。
-
This 看起来像解决方案。但我仍然无法将其转换为 swift。
标签: swift base64 public-key-encryption