我想在 Swift 中使用 aes-128-ctr 和 CryptoSwift 库,但是我得到的密文太长了。
我的 IV 是 16 字节,盐是 32 字节,aes 明文也是 32 字节,为什么得到的密文是 48 字节,因此又填充了 16 字节?
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,但是我如何获得这样的盐?