如何将 PBKDFD2 与 CryptoKit 结合使用

问题描述 投票:0回答:1

我正在用 Swift 开发一个 iOS 应用程序,需要加密一些文本,并希望使用用户密码作为加密密钥。

为了能够安全地执行此操作,我需要使用 PBKDF2 算法从用户密码中派生对称密钥。我发现的问题是 CryptoKit 框架不提供对此类算法的支持,因此我使用 CommonCrypto 框架来派生密钥并使用 CryptoKit 进行加密,但在调用时总是收到 CryptoKit.CryptoKitError.in CorrectKeySize 错误密封法。

我的代码如下:

let derivedKey: [UInt8] = PBKDF.deriveKey(password: password, salt: salt, prf: PBKDF.PseudoRandomAlgorithm.sha256, rounds: 320000, derivedKeyLength: 256)
        let keyAsData = Data(derivedKey)      
let nonce = AES.GCM.Nonce()
let key = SymmetricKey(data: keyAsData)
let sealedBox = try AES.GCM.seal(data, using: key, nonce: nonce)

方法 PBKDF.deriveKey 来自 IDZSwiftCommonCrypto 项目,它是 Swift 中 CommonCrypto 的包装器。

如果我使用

let key = SymmetricKey(size: .bits256)
创建密钥,那么加密工作正常,所以我创建密钥的方式存在问题。

¿我应该以不同的方式创建密钥吗?

如有任何帮助,我们将不胜感激。

swift aes pbkdf2 aes-gcm apple-cryptokit
1个回答
0
投票

derivedKeyLength

PBKDF.deriveKey
参数以字节为单位。你已经通过了一些位。你想在这里通过 32,而不是 256。

© www.soinside.com 2019 - 2024. All rights reserved.