【问题标题】:How to perform 3DES encryption in Ruby?如何在 Ruby 中执行 3DES 加密?
【发布时间】: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"

有谁知道我做错了什么?

谢谢。

【问题讨论】:

标签: php ruby encryption yii 3des


【解决方案1】:

我找不到$StringHelper::encrypt函数,但如果它兼容,你只需要在你的Ruby代码中也执行cipher.final并将updatefinal的输出连接起来很清楚在instructions 中指定。

【讨论】:

  • 这有帮助吗,你过得怎么样?
【解决方案2】:

https://www.ruby-forum.com/topic/168731

'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
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    • 2023-04-01
    相关资源
    最近更新 更多