【问题标题】:Ruby on Rails Decryption mcrypt_decryptRuby on Rails 解密 mcrypt_decrypt
【发布时间】:2014-06-02 17:08:23
【问题描述】:

以下函数在 PHP 中完美运行。如何在 Ruby on Rails 中翻译它。

请注意,privateKey 和 iv 都是 32 个字符。

mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $privateKey, base64_decode($enc), MCRYPT_MODE_CBC, $iv)

非常感谢你的期待

【问题讨论】:

标签: ruby-on-rails ruby encryption


【解决方案1】:

试试ruby-mcrypt gem。

require 'rubygems'
require 'mcrypt'

crypto = Mcrypt.new(:twofish, :cbc, MY_KEY, MY_IV, :pkcs)

# encryption and decryption in one step
ciphertext = crypto.encrypt(plaintext)
plaintext  = crypto.decrypt(ciphertext)

【讨论】:

    【解决方案2】:

    仅使用具有这些功能的特定类。

    【讨论】:

    • 非常感谢您的快速回复。我是 Ruby on Rails 的新手。能否请您再解释一下?
    • 我需要安装哪些 gem?
    • 我在 irb 命令提示符下运行了以下命令,它们返回 true。 require "base64" require 'hmac-md5' require 'crypt/rijndael' 当我使用以下 mcrypt_decrypt(MCRYPT_RIJNDAEL_256, privateKey, Base64.decode64(enc), MCRYPT_MODE_CBC, iv) 我得到一个错误 uninitialized constant ActionView::CompiledTemplates:: MCRYPT_RIJNDAEL_256
    • 如果您能告诉我如何在 Ruby on Rails 中获得与以下 php 代码在 php 中生成的结果相同的结果,我将不胜感激
    • 是否有 MCRYPT_RIJNDAEL_256 的 Ruby 等价物?如果我使用 PHP 中的 MCRYPT_RIJNDAEL_256 和 Ruby 中的 AES-256-CBC 使用相同的密钥(32 个字符)和 iv(32 个字符)加密相同的数据,然后对加密数据进行 base64 编码,我总是会得到不同的结果。但是,如果我在 php 中使用 MCRYPT_RIJNDAEL_128 并在 Ruby 中使用密钥(32 个字符)和 iv(16 个字符)使用 AES-256-CBC,然后对加密数据进行 base64 编码,我会得到相同的结果。
    猜你喜欢
    • 2011-01-03
    • 1970-01-01
    • 2016-03-08
    • 2011-07-04
    • 2013-07-17
    • 1970-01-01
    • 2012-01-03
    • 2011-04-08
    • 2017-06-03
    相关资源
    最近更新 更多