php - 在 Ruby 中解密 PHP MCRYPT_RIJNDAEL_256

标签 php ruby-on-rails ruby encryption mcrypt

我有一个充满加密密码的数据库,我需要在 Ruby 中解密这些密码以进行平台更​​改。如何将此 PHP 代码移植到 Ruby?尝试在带有 AES_256 的 Ruby 中使用 OpenSSL 但出现“Bad Decrypt”错误以及我的 key ($salt) 不够长的错误。

在下面的示例中,$salt 是一个 25 个字符的字符串。

这是PHP解密函数:

function decrypt_password($text, $salt)
{
    return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,
        $salt, base64_decode($text), MCRYPT_MODE_ECB, 
        mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB),
        MCRYPT_RAND)));
}

最佳答案

还有一个用于 mcrypt 的 ruby​​ 库。请参阅下面的示例实现:

require 'mcrypt'
require 'base64'

# base64_decode() equivalent
encrypted = Base64.decode64(text)

# preparing Mcrypt library for Rijndael cipher, 256 bits, ECB mode
cipher = Mcrypt.new(:rijndael_256, :ecb, salt, nil, :zeros)

# padding required
encrypted = encrypted.ljust((encrypted.size / 32.0).ceil * 32, "\0") 

# decrypt using Rijndael
decrypted = cipher.decrypt(encrypted).strip

依赖项:libmcrypt

  • sudo apt-get install libmcrypt-dev (Ubuntu/Debian)
  • sudo yum install libmcrypt-devel (RHEL/CentOS/Fedora)

gem :mcrypt

  • gem 安装 ruby​​-mcrypt

关于php - 在 Ruby 中解密 PHP MCRYPT_RIJNDAEL_256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23745059/

相关文章:

ruby-on-rails - (未定义的局部变量或方法 `byebug'

ruby - 为什么我得到 '` parse' : (<unknown>): mapping values are not allowed in this context' in YAML file in Ruby

PHP 切换对象是字符串还是数字

php - 无法获取当前日期的记录

php - PDO OCI : Success with Info exception

ruby-on-rails - 在Rails应用的 View 或部分 View 中使用binding.pry

ruby-on-rails - 从 ruby​​ 1.9.3 升级到 2.2.2 时的性能问题

php - 为什么我无法连接到我的数据库

ruby - 如何使用Chewy更新Elasticsearch字段类型

ruby-on-rails - 未定义的方法 'dragonfly_accessor'