微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

由于base64编码的aesKey和aesIV,CryptoSwift抛出invalidKeySize

如何解决由于base64编码的aesKey和aesIV,CryptoSwift抛出invalidKeySize

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

密钥和IV的大小为AES256,为了进行加密和解密,我需要使用具有ECB / CBC块模式的PKCS7填充类型

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。