Ruby on Rails解密

时间:2012-04-11 11:25:59

标签: ruby-on-rails ruby encryption

以下功能在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

2 个答案:

答案 0 :(得分: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加密。

我希望这个帮助

答案 1 :(得分:0)

你是在php示例中解码它的base64。你是否也在红宝石中这样做?

require "base64"
Base64.decode64(encrypted)

除此之外,代码看起来对我来说。