gpt4 book ai didi

swift - CryptoSwift 由于 Base64 编码的 aesKey 和 aesIV 而抛出 invalidKeySize

转载 作者:行者123 更新时间:2023-12-02 02:40:44 27 4
gpt4 key购买 nike

我有一个项目,可以从 API 检索数据并在应用程序中显示。但API使用AES加密,我有aesKey和aesIV key ,这些 key 是base64编码的。我需要用这些键对另一个字符串进行编码。为此,我使用 CryptoSwift 库,但当我尝试使用此 key 对字符串进行加密时,Swift 控制台会警告我有关 invalidKeySize 的问题。我尝试从 Base64 解码为字符串,但效果不佳。这些是示例的键;

key 和 IV 大小为 AES256,为了加密和解密,我需要使用 PKCS7 填充类型和 ECB/CBC block 模式

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))

最佳答案

代码片段中的 aesKeyaesIV 是 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))

关于swift - CryptoSwift 由于 Base64 编码的 aesKey 和 aesIV 而抛出 invalidKeySize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63686517/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com