【发布时间】:2015-02-28 04:08:33
【问题描述】:
我有一个执行 3DES 加密的旧 Yii PHP 系统。
$data = 'id=1,username=admin,email=webmaster@example.com';
$encrypted_key = mhash(MHASH_SHA1,"foo_bar_key");
$encrypted_value = $StringHelper::encrypt($data, $encrypted_key);
echo $encrypted_value
//output => "0G8ITzc32wvqpDIjt6O7tZV9VKwU8KK7p0xI%2Fa%2FjiPOR%2FLrpfvsfMg9fyV2vAHgf"
我正在尝试使用 3DES 加密在 Ruby 中获得相同的加密值,但我无法获得它。
require 'openssl'
require 'mhash'
require 'base64'
@data = "id=1,username=admin,email=webmaster@example.com"
@encrypted_key = Mhash.sha1("foo_bar_key")
cipher = OpenSSL::Cipher::Cipher.new('des-ede-cbc')
cipher.encrypt
cipher.key = @encrypted_key
output = cipher.update(@data)
puts output
# output => "\xFC\xCAR\xE2L\xB1\x1A\xCA\x83E\x9C\xEEA\xFD\x9D'I\v\x8E9\xFA4\x14\x1F&\xBFR\x8A\xD3\xBDL\xC64\xABf\xCD\x85\x87\x88^"
#Base64.encode64(output) => "/MpS4kyxGsqDRZzuQf2dJ0kLjjn6NBQfJr9SitO9TMY0q2bNhYeIXg==\n"
有谁知道我做错了什么?
谢谢。
【问题讨论】:
-
尝试用 base64 编码 - ruby-doc.org/stdlib-2.1.5/libdoc/base64/rdoc/Base64.html
-
不走运,我得到了 Ruby 的输出:"/MpS4kyxGsqDRZzuQf2dJ0kLjjn6NBQfJr9SitO9TMY0q2bNhYeIXg==\n"
标签: php ruby encryption yii 3des