Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Ruby中执行3DES加密?_Php_Ruby_Encryption_Yii_3des - Fatal编程技术网

Php 如何在Ruby中执行3DES加密?

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

我有一个执行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"
有人知道我做错了什么吗


谢谢。

我找不到
$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
    

尝试用base64编码-运气不好,我得到的是Ruby输出:“/MPS4KYXGSQDRZUQF2DJ0KLJJN6NBQFJR9SITO9TMY0Q2BNHYEIXG==\n”这有帮助吗,你过得怎么样?