【问题标题】:Generate a symmetric key on iOS using Security.framework使用 Security.framework 在 iOS 上生成对称密钥
【发布时间】:2019-01-31 22:29:44
【问题描述】:

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

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

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

【问题讨论】:

标签: ios encryption encryption-symmetric security-framework


【解决方案1】:

通过 CryptoKit 的介绍,这可以使用以下代码完成:

 import CryptoKit

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

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

//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)!)")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 2019-08-09
    相关资源
    最近更新 更多