Crypto Js 和 Rails 中的 AES 加密给出了不同的结果

pwc*_*pwc 5 javascript encryption aes ruby-on-rails-3

我正在尝试使用 AES-256-CBC 和 Crypto Js(在客户端)和 Rails 中的 OpenSSL(在服务器端)加密文本,它们给了我不同的结果。这解释了为什么我无法在服务器端解码加密文本,反之亦然。

这是我的做法:

客户端 (Crypto JS) - 已编辑

iv = CryptoJS.enc.Base64.parse("kT+uMuPwUk2LH4cFbK0GiA==")

key = CryptoJS.enc.Hex.parse("6476b3f5ec6dcaddb637e9c9654aa687")

encrypted_text = CryptoJS.AES.encrypt("test", key, {mode: CryptoJS.mode.CBC, formatter : Base64Formatter, iv : iv})

encrypted_text => "7Qu7/V7yXHt67wMOV0/1Tg=="
Run Code Online (Sandbox Code Playgroud)

服务器端 (Rails OpenSSL) - 已编辑

iv = Base64.decode64("kT+uMuPwUk2LH4cFbK0GiA==")

key = "6476b3f5ec6dcaddb637e9c9654aa687"

cipher = OpenSSL::Cipher::Cipher.new('aes-256-cbc')

cipher.encrypt

cipher.key = key

cipher.iv = iv

text = cipher.update("test") + cipher.final

encrypted_text = Base64.strict_encode64(text)

encrypted_text => "fHhNBuopuuthdq2SFvvgDw=="
Run Code Online (Sandbox Code Playgroud)

有没有人知道我做错了什么?我只是在这一点上难住了。

非常感谢帮助..谢谢!

保罗

cyt*_*nus 2

在行中:

key = CryptoJS.enc.Hex.parse("abcdefghijklmnopqrstuvwxyz012345")
Run Code Online (Sandbox Code Playgroud)

字符串“abcdefghijklmnopqrstuvwxyz012345”不是十六进制表示法。我会从那开始。