CryptoSwift を使用して一部のデータを暗号化し、次に Node.js を使用して同じデータを暗号化しました。しかし、結果は同じではありません。作者に聞いたところ、バグではないとのことでした。
どこで間違えたのかわからない。以下は、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>
ご覧のとおり、最初の 2 バイトは同じですが、残りは異なります。なんで?私のコードの書き方は間違っていますか?クリプトについてよくわからないので理由を教えてください。どうもありがとう。