我正在努力使用安全框架在iOS中生成对称密钥。在SecKey.h中有一个SecKeyGenerateSymmetric()方法,但它仅适用于macOS。我看到的唯一可用的是SecKeyGeneratePair(),它用于非对称加密。
此外,从阅读此documentation可以看出,执行对称加密的唯一方法是生成一个非对称密钥对,并使用公钥调用SecKeyCreateEncryptedData(),然后在幕后生成一个对称密钥,但您无权访问它。我需要有权访问对称密钥。
如果有人有在iOS上做对称加密的经验,我将不胜感激。
发布于 2020-07-03 04:55:24
有了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)!)")https://stackoverflow.com/questions/54470162
复制相似问题