我使用 CryptoSwift 加密一些数据,然后使用 Node.js 加密相同的数据。但结果并不相同。我问过作者,他说不是bug。
我不知道我在哪里做错了。以下是我如何使用 CryptoSwift 和 Node.js 的图片:
密码算法:aes-256-cfb
密钥:32 字节 1
iv: 16 字节 0
CryptoSwift:开发分支 0.1.1
Node.js:LTS 4.2.3
这是快速代码:
func testAES() {
let key = [UInt8](count: 32, repeatedValue: 1)
let iv = [UInt8](count: 16, repeatedValue: 0)
print(key)
print(iv)
let aes256cfb = try! AES(key: key, iv: iv, blockMode: .CFB)
let en1 = try! aes256cfb.encrypt([0x5, 0x77], padding: nil)
print(en1.map({ i in String(format: "%2x", i)}))
let en2 = try! aes256cfb.encrypt([0x5, 0x0, 0x3, 0x89, 0x20], padding: nil)
print(en2.map({ i in String(format: "%2x", i)}))
}
CryptoSwift:
["77", "ef"]
["77", "98", "c9", "2c", "45"]
Node.js:
<Buffer 77 ef>
<Buffer cf a5 66 8a 3e>
你可以看到,前两个字节是一样的,但其余的不是。为什么?我的代码写错了吗?我对加密了解不多,请告诉我原因。太感谢了。