Php 如何在Ruby中执行3DES加密?
我有一个执行3DES加密的传统Yii PHP系统Php 如何在Ruby中执行3DES加密?,php,ruby,encryption,yii,3des,Php,Ruby,Encryption,Yii,3des,我有一个执行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 => "0G8ITzc32w
$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"
有人知道我做错了什么吗
谢谢。我找不到
$StringHelper::encrypt
函数,但如果它兼容,您只需在Ruby代码中执行cipher.final
,并将update
和final
的输出连接起来,如中明确指定的那样。
我的系统上的“man enc”表示:
des-ede3-cbc Three key triple DES EDE in CBC mode
des-ede3 Three key triple DES EDE in ECB mode
- des-ede3-cbc的des3别名
des-ede3-cfb Three key triple DES EDE CFB mode des-ede3-ofb Three key triple DES EDE in OFB mode