Swift 3将SecKey导出为String

时间:2017-04-27 22:59:57

标签: ios swift swift3 public-key-encryption seckeyref

我正在使用swift 3开发iOS应用程序。

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

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

我发现很少有教程,但我不能完全理解从SecKey引用中提取的内容,而且我也不知道如何将其转换为String

1 个答案:

答案 0 :(得分:12)

导出密钥(仅限iOS 10)

<T extends Nameable> T getObject()

请参阅https://stackoverflow.com/a/30662270/5276890https://stackoverflow.com/a/27935528/5276890了解可能支持iOS的更长时间方式&lt; 10。

重新导入密钥

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

注意:这会生成base64密钥而不是证书。许多在线代码示例处理如何使用SecCertificateCreateWithData从证书生成公钥

另外:512位生成速度快但毫无价值。一旦您对结果满意,请选择更长且更安全的值。

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