【发布时间】:2018-10-11 15:22:53
【问题描述】:
我在使用AES128 和CTR-Mode 和我的测试函数(nullArrayBugTest()) 时遇到了CryptoSwift-API (krzyzanowskim) 的问题,该函数在特定计数器值(0 和25 之间= 13 和24 之间)上产生错误数组计数通常应该是 16!
即使我使用带有错误值 13 的手动递增的“iv_13”而不是默认的“iv_0”和计数器 13...
测试一下以了解我的意思。
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.
【问题讨论】:
标签: swift encryption aes cryptoswift