我有一个充满加密密码的数据库,我需要在 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/