我正在尝试使用 AES-256-CBC 和 Crypto Js(在客户端)和 OpenSSL in rails(在服务器端)来加密文本,它们给了我不同的结果。这解释了为什么我无法在服务器端解码加密文本,反之亦然。
这是我的做法:
客户端(加密 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=="
服务器端 (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=="
有人知道我做错了什么吗?我只是在这一点上感到难过。
非常感谢您的帮助..谢谢!
保罗
最佳答案
行内:
key = CryptoJS.enc.Hex.parse("abcdefghijklmnopqrstuvwxyz012345")
字符串“abcdefghijklmnopqrstuvwxyz012345”不是十六进制表示法。 我会从那开始。
关于javascript - Crypto Js 和 Rails 中的 AES 加密给出了不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10594616/