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

时间:2019-01-31 22:29:45

标签: ios encryption encryption-symmetric security-framework

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

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

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

1 个答案:

答案 0 :(得分:0)

通过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)!)")