gpt4 book ai didi

ios - Swift 3 将 SecKey 导出到字符串

转载 作者:搜寻专家 更新时间:2023-10-30 22:25:33 25 4
gpt4 key购买 nike

我正在使用 swift 3 开发一个 iOS 应用。

我需要将 SecKey(这是用户 RSA 公钥引用)导出到字符串(例如 base64),以便通过生成的 QRCode 共享它。

它也必须以其他方式工作,因为扫描 QRCode 的其他用户将能够从从 QRCode 中提取的字符串重建 SecKey 引用。

我找到了一些教程,但我不明白我需要从 SecKey 引用中提取什么,我也不知道如何将它转换为 String.

最佳答案

导出 key (仅限 iOS 10)

var error:Unmanaged<CFError>?
if let cfdata = SecKeyCopyExternalRepresentation(publicKey!, &error) {
let data:Data = cfdata as Data
let b64Key = data.base64EncodedString()
}

参见 https://stackoverflow.com/a/30662270/5276890https://stackoverflow.com/a/27935528/5276890可能支持 iOS < 10 的更长的方式。

重新导入 key

guard let data2 = Data.init(base64Encoded: b64Key) else {
return
}

let keyDict:[NSObject:NSObject] = [
kSecAttrKeyType: kSecAttrKeyTypeRSA,
kSecAttrKeyClass: kSecAttrKeyClassPublic,
kSecAttrKeySizeInBits: NSNumber(value: 512),
kSecReturnPersistentRef: true as NSObject
]

guard let publicKey = SecKeyCreateWithData(data2 as CFData, keyDict as CFDictionary, nil) else {
return
}

注意:这会生成 base64 key 而不是证书。网上有很多代码示例处理如何使用 SecCertificateCreateWithData 从证书生成公钥

此外:512 位生成速度很快但毫无值(value)。对结果满意后,选择更长且安全的值。

导入我生成和导出的 key 时,我得到了有效结果,所以我认为它有效,但我没有尝试用它加密和解密。

关于ios - Swift 3 将 SecKey 导出到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43669237/

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