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

标签 javascript ruby-on-rails-3 encryption aes

我正在尝试使用 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/

相关文章:

javascript - 为什么 Emscripten 会为添加到分配的 Float32Array 中的某些数字抛出错误?

javascript - 将对象拆分成更小的部分

ruby-on-rails - 如何检查模型的所有属性是否都设置了值?

javascript - 使用 JQuery 的动态 JavaScript?

javascript - 是否可以通过 JavaScript 检测插件是否激活?

ruby-on-rails - Rails 3 has_many 改变了吗?

javascript - 如何停止将 www.html.com 附加到 URLS 开头的 Rails

encryption - 在没有进一步信息的情况下是否可以推迟信息披露?

ssl - DSC - 客户端错误 - 无法获取私钥

c# - 我正在制作我的第一个加密程序,有什么建议吗?