我遇到了从 NSData创建SecKey 的问题。基本上,我的客户端 - 服务器通信基于使用私钥创建的签名,并在服务器上使用公钥进行验证。
我正在两个设备之间实现会话转移,为了继续通信,我还需要传输这些密钥。我正在将SecKey转换为NSData并通过蓝牙发送,但另一方面我无法将NSData 转换为 SecKey以使用加密。
你能帮忙吗?
答案 0 :(得分:1)
更完整的示例(swift 4,iOS 10+) - 假设您有一个Base64编码的字符串。请注意,连接的另一端也需要使用相同的格式创建密钥有效负载(即RSA - PKCS#1,也验证密钥大小)。此函数处理公钥或私钥(为简洁起见,省略了安全警告)。
// 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
}
答案 1 :(得分:0)
我成功使用的东西......
let xyz = new BokaHanterereIndex({"showBtn": "#showButton"});
没有简单的方法来转移密钥对的私有部分(这是可能的,但要尽量避免它)
答案 2 :(得分:0)
从<!-- Example -->
<p>I want to make only THIS word blue.</p>
<!-- My only solution -->
<p style="display:inline;">I want to make only </p><p style="display:inline; color:blue;">THIS</p><p style="display:inline"> word blue</p>
开始,您可以使用以下代码:
iOS 10