1

RubyでトリプルDES暗号化を実行しようとしています。このページの結果を複製しようとしています:http://da.nmilne.com/des.html

それらの結果をRubyで複製しようとしています。問題はキーが文字列であることになっていることだと思いますが、16進キーを渡す必要があります。それまたは暗号化されている文字列の形式が間違っています。または多分両方。:-)

require 'openssl'
des = OpenSSL::Cipher::Cipher.new("des-ede-cbc")
des.encrypt
des.key="23232323232323234545454545454545"
des.update("0000000000000000")
res=des.final
res.unpack('H*')  
=> ["5045c5d37ca4d13b"]

しかし、それは次のようになります。

=> ["3a42d7a1d1c60c40"]

私がどこで間違っているのかについての指針はありますか?

4

1 に答える 1

4

キーは 16 進数です。貼り付けた Java ページを見ると、詳細な出力でキーのバイナリ値をデコードすることで簡単に確認できます。

>> des_cbc=OpenSSL::Cipher::Cipher.new("des-ede-cbc")
=> #<OpenSSL::Cipher::Cipher:0x10116ce28>
>> des_cbc.encrypt
=> #<OpenSSL::Cipher::Cipher:0x10116ce28>
>> des_cbc.key="\x23"*8 << "\x45"*8
=> "########EEEEEEEE"
>> des_cbc.update("\x00"*8).unpack('H*')
=> ["3a42d7a1d1c60c40"]
于 2010-10-23T03:47:43.847 に答える