由于 base64 编码的 aesKey 和 aesIV,CryptoSwift 抛出 invalidKeySize
CryptoSwift throws invalidKeySize because of base64 encoded aesKey and aesIV
我有一个项目可以从 API 检索数据并显示在应用程序中。但是 API 使用 AES 加密,我有 aesKey 和 aesIV 密钥,这些密钥是 base64 编码的。我需要使用这些键对另一个字符串进行编码。为此,我使用了 CryptoSwift 库,但是当我尝试使用此密钥来加密字符串时,swift 控制台警告我 invalidKeySize.I 试图从 base64 解码为字符串,但它也不起作用。这些是示例的键;
密钥和 IV 大小为 AES256,对于加密和解密,我需要使用 PKCS7 填充类型和 ECB/CBC 块模式
aesKey = lHLBfVxlGoKoaCqWORJEHh3jOvC2EBx2VHGyNAdqYV0=
aesIV = 2spaSfljZ/cunRbuVkdphQ==
and CryptoSwift code block is:
let aes = try AES(key: "\(aesKeyString)", iv: "\(aesIVString)")
let cipherText = try aes.encrypt(Array("all".utf8))
代码段中的 aesKey
和 aesIV
是 Base64 编码的,因此在这种形式下它并不是很有用。您使用的便利初始值设定项用于字符串,而不是您提供的 base64 编码数据(恰好是字符串,但它不同)。
let aesKey = "lHLBfVxlGoKoaCqWORJEHh3jOvC2EBx2VHGyNAdqYV0="
let key = [UInt8](base64: aesKey)
let aesIV = "2spaSfljZ/cunRbuVkdphQ=="
let iv = [UInt8](base64: aesIV)
let aes = try AES(key: key, blockMode: CBC(iv: iv))
let cipherText = try aes.encrypt(Array("all".utf8))
我有一个项目可以从 API 检索数据并显示在应用程序中。但是 API 使用 AES 加密,我有 aesKey 和 aesIV 密钥,这些密钥是 base64 编码的。我需要使用这些键对另一个字符串进行编码。为此,我使用了 CryptoSwift 库,但是当我尝试使用此密钥来加密字符串时,swift 控制台警告我 invalidKeySize.I 试图从 base64 解码为字符串,但它也不起作用。这些是示例的键;
密钥和 IV 大小为 AES256,对于加密和解密,我需要使用 PKCS7 填充类型和 ECB/CBC 块模式
aesKey = lHLBfVxlGoKoaCqWORJEHh3jOvC2EBx2VHGyNAdqYV0=
aesIV = 2spaSfljZ/cunRbuVkdphQ==
and CryptoSwift code block is:
let aes = try AES(key: "\(aesKeyString)", iv: "\(aesIVString)")
let cipherText = try aes.encrypt(Array("all".utf8))
代码段中的 aesKey
和 aesIV
是 Base64 编码的,因此在这种形式下它并不是很有用。您使用的便利初始值设定项用于字符串,而不是您提供的 base64 编码数据(恰好是字符串,但它不同)。
let aesKey = "lHLBfVxlGoKoaCqWORJEHh3jOvC2EBx2VHGyNAdqYV0="
let key = [UInt8](base64: aesKey)
let aesIV = "2spaSfljZ/cunRbuVkdphQ=="
let iv = [UInt8](base64: aesIV)
let aes = try AES(key: key, blockMode: CBC(iv: iv))
let cipherText = try aes.encrypt(Array("all".utf8))