Swift如何导入rsa密钥

时间:2015-03-03 06:03:12

标签: swift encryption rsa private-key

现在,我已经有了一个密钥对。

我想在Swift中导入此密钥对,并使用此密钥对加密

某事或解密我从restclint得到的东西

我看到很多论文都在说一般的密钥对,但我已经知道了。

什么是kSecAttrApplicationTag呢?

请帮帮我

var dataPtr:Unmanaged<AnyObject>?
let query: [String:AnyObject] = [
kSecClass: kSecClassKey,
kSecAttrApplicationTag: "com.example.site.public",
kSecReturnData: kCFBooleanTrue
]
let qResult = SecItemCopyMatching(query, &dataPtr)
// error handling with `qResult` ...
let publicKeyData = dataPtr!.takeRetainedValue() as NSData
// convert to Base64 string
let base64PublicKey = publicKeyData.base64EncodedStringWithOptions(nil)

2 个答案:

答案 0 :(得分:5)

看看Swift-RSAUtils,它提供了您所需要的功能。我不能不感谢Thanh Ba Nguyen在这个领域的出色工作。苹果公司因为让开发人员的生活变得如此悲惨而感到羞耻!

基本上,故事是这样的:您必须以DER或PEM格式加载密钥(并在PEM的情况下解码base64),然后从中删除一些部分,然后将密钥导入系统的密钥环。完成此操作后,您可以从密钥环中获取它们并使用它们。不幸的是,Apple没有记录这一点,特别是对于Swift。我能找到的唯一参考文档是Certificate, Key, and Trust Services Reference,并确保点击“两者”不仅“Swift”,或者你不会看到太多。或者忘掉它并使用Swift-RSAUtils,代码几乎可以自我解释。

答案 1 :(得分:1)

最简单的解释:当您在钥匙串中存储某些东西时,它具有唯一的密钥(用于识别目的)。 kSecAttrApplicationTag:&#34; com.example.site.public&#34;意思是嘿,我使用的唯一密钥是&#39; com.example.site.public&#39;&#34;

干杯,