私はしかし私の結果の暗号文が長すぎる、CryptoSwiftライブラリとスウィフトでAES-128-CTRを使用します。スウィフト - AES 128 CTR、暗号文が長すぎる
マイIVが16バイト、塩32バイトであり、AES平文も32バイトであり、なぜ別の16バイトのパディング従って、得られた暗号文の48バイトでありますか?
let salt: [UInt8] = Array("tkmlidnonknkqgvapjrpdcductebsozn".utf8)
let derivedKey = try PKCS5.PBKDF2(password: password, salt: salt, iterations: numberOfIterations, variant: .sha256).calculate()
let iv: [UInt8] = Array("abcdefgthksdfghj".utf8)
let aesKey: [UInt8] = Array(derivedKey[..<16])
let aes = try AES(key: aesKey, blockMode: .CTR(iv: iv))
let ciphertext = try aes.encrypt(password)
ここで、パスワードは32バイトの平文です。
さらに、ランダムな塩を生成する方法はありますか?私はそれを発見しました
let iv: [UInt8] = AES.randomIV(AES.blockSize)
ランダムなIVを生成しますが、どのようにそのような塩を得るのですか?
CryptoSwiftの使用を避けるためには、Common Cryptoベースの実装よりも500〜1000倍も遅い他のものを検討してください。アップルのCommon CryptoはFIPS認証を取得しており、CryptoSwiftを使用して正当性とセキュリティを確保しています。 – zaph