0

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

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

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

我尝试在 Ruby 中使用以下内容,但遇到了错误的解密错误。

cipher = OpenSSL::Cipher.new('aes-256-cbc')

cipher.decrypt
cipher.key = privateKey
cipher.iv = iv

decrypted = '' << cipher.update(encrypted) << cipher.final
4

2 回答 2

1

这里有一些对我有用的代码:


def decrypt_data(data, pwd, iv)
    encrypted_data = Base64.decode64(data)
    aes = OpenSSL::Cipher::Cipher.new("AES-256-CBC")
    aes.decrypt
    aes.key = Digest::MD5.hexdigest(pwd)
    aes.iv = iv
    result = aes.update(encrypted_data) + aes.final 
end

在我的示例中,密码使用 MD5 加密。

我希望这有帮助

于 2012-04-11T12:31:47.357 回答
0

您在 php 示例中对其进行 base64 解码。你也在红宝石中这样做吗?

require "base64"
Base64.decode64(encrypted)

除此之外,代码看起来对我来说是正确的。

于 2012-04-11T11:35:41.587 回答