首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Security.framework在iOS上生成对称密钥

使用Security.framework在iOS上生成对称密钥
EN

Stack Overflow用户
提问于 2019-02-01 06:29:45
回答 1查看 1K关注 0票数 2

我正在努力使用安全框架在iOS中生成对称密钥。在SecKey.h中有一个SecKeyGenerateSymmetric()方法,但它仅适用于macOS。我看到的唯一可用的是SecKeyGeneratePair(),它用于非对称加密。

此外,从阅读此documentation可以看出,执行对称加密的唯一方法是生成一个非对称密钥对,并使用公钥调用SecKeyCreateEncryptedData(),然后在幕后生成一个对称密钥,但您无权访问它。我需要有权访问对称密钥。

如果有人有在iOS上做对称加密的经验,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-07-03 04:55:24

有了CryptoKit的介绍,这可以使用以下代码来完成:

代码语言:javascript
复制
 import CryptoKit

 //generate Symmetric  key
 let key = SymmetricKey(size: .bits256)

下面是一个使用AES-GCM方法的示例,该方法使用32字节对称密钥进行加密和解密:

代码语言:javascript
复制
//generate Symmetric  key
 let key = SymmetricKey(size: .bits256)

  //encrypt plaintext
   let encryptedData = try!  AES.GCM.seal("plain-text".data(using: .utf8)!, using: key)
    print("Encrypted data using symmetric key:\(encryptedData)")
    
    //decrypt data
    let sealedBoxRestored = try! AES.GCM.SealedBox(nonce: encryptedData.nonce, ciphertext: encryptedData.ciphertext, tag: encryptedData.tag)
    let decryptedData = try! AES.GCM.open(sealedBoxRestored, using: key)
    print("Decrypted:\n\(String(data: decryptedData, encoding: .utf8)!)")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54470162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档