为什么Crypt :: CBC(perl)和OpenSSL(ruby)之间的blowfish加密存在差异?
Perl的
use Crypt::CBC;
my $cipher = Crypt::CBC->new( -key => 'length32length32length32length32', -cipher => 'Blowfish' );
my $ciphertext = $cipher->encrypt_hex('test');
# ciphertext is 53616c7465645f5f409c8b8eb353823c06d9b50537c92e19
Run Code Online (Sandbox Code Playgroud)
红宝石
require "rubygems"
require "openssl"
cipher = OpenSSL::Cipher::Cipher.new("bf-cbc")
cipher.encrypt
cipher.key = "length32length32length32length32"
result = cipher.update("test") << cipher.final
ciphertext = result.unpack("H*").first
# ciphertext is 16f99115a09e0464
Run Code Online (Sandbox Code Playgroud)
Crypt :: CBC Salted__默认情况下似乎在输出前面.你能解释一下这些之间发生了什么不同吗?有没有办法让OpenSSL以类似于Crypt :: CBC的方式运行?