我在CryptoSwift-API (krzyzanowskim)
使用和我的测试函数时遇到了一个问题,AES128
该函数在特定的计数器值(0 到 25 = 13 和 24 之间)上产生错误的数组计数,通常应该是 16!即使我使用带有错误值 13 的手动递增的“iv_13”而不是默认的“iv_0”和计数器 13... 测试一下以了解我的意思。CTR-Mode
(nullArrayBugTest())
func nullArrayBugTest() {
var ctr:CTR
let nilArrayToEncrypt = Data(hex: "00000000000000000000000000000000")
let key_ = Data(hex: "000a0b0c0d0e0f010203040506070809")
let iv_0: Array<UInt8> = [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f]
//let iv_13: Array<UInt8> = [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x1c]
var decryptedNilArray = [UInt8]()
for i in 0...25 {
ctr = CTR(iv: iv_0, counter: i)
do {
let aes = try AES(key: key_.bytes, blockMode: ctr)
decryptedNilArray = try aes.decrypt([UInt8](nilArrayToEncrypt))
print("AES_testcase_\(i) for ctr: \(ctr) withArrayCount: \(decryptedNilArray.count)")
}catch {
print("De-/En-CryptData failed with: \(error)")
}
}
}
为什么我总是需要具有 16 个值的加密数组的问题并不重要:D。
有人知道为什么aes.decrypt()
-function 会像我收到的那样处理吗?
谢谢你的时间。
迈克尔·S。