gpt4 book ai didi

ios - 从 NSData 中检索 SecKey

转载 作者:行者123 更新时间:2023-12-01 18:44:06 28 4
gpt4 key购买 nike

我在 NSData 创建 SecKey 时遇到问题。基本上,我的客户端-服务器通信基于使用私钥创建的签名并使用公钥在服务器上进行验证。

我正在两个设备之间实现 session 传输,为了继续通信,我还需要传输这些 key 。我正在将 SecKey 转换为 NSData 并通过蓝牙发送,但另一方面我无法将 NSData to SecKey 转换回使用加密。

你能帮忙吗?

最佳答案

更完整的例子(swift 4,iOS 10+)——假设你有一个 Base64 编码的字符串。请注意,连接的另一端也需要使用相同的格式创建 key 有效负载(即 RSA - PKCS #1,也验证 key 大小)。此函数处理公钥或私钥(为简洁起见,省略了安全警告)。

// Extract secKey from encoded string - defaults to extracting public keys
func decodeSecKeyFromBase64(encodedKey: String, isPrivate: Bool = false) -> SecKey? {
var keyClass = kSecAttrKeyClassPublic
if isPrivate {
keyClass = kSecAttrKeyClassPrivate
}
let attributes: [String:Any] =
[
kSecAttrKeyClass as String: keyClass,
kSecAttrKeyType as String: kSecAttrKeyTypeRSA,
kSecAttrKeySizeInBits as String: 2048,
]

guard let secKeyData = Data.init(base64Encoded: encodedKey) else {
print("Error: invalid encodedKey, cannot extract data")
return nil
}
guard let secKey = SecKeyCreateWithData(secKeyData as CFData, attributes as CFDictionary, nil) else {
print("Error: Problem in SecKeyCreateWithData()")
return nil
}

return secKey
}

关于ios - 从 NSData 中检索 SecKey,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38097824/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com