我正在努力使用安全性框架在iOS中生成对称密钥。 SecKeyGenerateSymmetric()
中有一种方法SecKey.h
,但仅适用于macOS。我看到的唯一可用的是SecKeyGeneratePair()
,用于非对称加密。
另外,通过阅读此documentation,看来进行对称加密的唯一方法是生成一个非对称密钥对,并使用公共密钥调用SecKeyCreateEncryptedData()
,而在幕后会生成一个对称密钥,但是您没有访问权限。我需要访问对称密钥。
如果有人有在iOS上进行对称加密的经验,我将不胜感激。
答案 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)!)")