以下功能在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
答案 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)
除此之外,代码看起来对我来说。