【发布时间】:2018-01-12 12:19:45
【问题描述】:
我将我的公钥作为字节数组包含在项目中。我想用它来加密密码。当我尝试从字节数组创建公钥时,我得到了下面给出的错误。
SecKeyCreateWithData failed :Optional(Swift.Unmanaged<__ObjC.CFError>(_value: Error Domain=NSOSStatusErrorDomain Code=-50
"RSA public key creation from data failed" UserInfo={NSDescription=RSA public key creation from data failed}))
下面是代码。
let attributes : [String : Any] = [
kSecAttrKeyType as String : kSecAttrKeyTypeRSA,
kSecAttrKeyClass as String : kSecAttrKeyClassPublic,
kSecAttrKeySizeInBits as String : 1024 as AnyObject]
var priKeyCreateError: Unmanaged<CFError>?
_ = SecKeyCreateWithData(PublicKeyDataDevQA as Data as CFData, attributes as CFDictionary, &priKeyCreateError)
if(priKeyCreateError != nil)
{
print("\n SecKeyCreateWithData failed :" + String(describing: priKeyCreateError));
}
我想在不使用任何第三方库(如 Swifty RSA)的情况下实现这一点。
使用的公钥可用 here
【问题讨论】:
-
请同时包含十六进制的公钥字节。否则,这个问题无法回答,必须关闭。密钥大小不应该是
CFNumber类型吗? PS Winterbash 结束了,该网站应该摘掉你的帽子 ;) -
@MaartenBodewes 我已经用公钥更新了问题
-
那个“键”看起来像编码的 ASCII 或 UTF-8。密钥应该是二进制格式,可能是 PKCS#1 或 SubjectPublicKeyInfo(在 X.509 中指定)。
标签: ios swift encryption cryptography