ruby中的解密错误

sat*_*sat 6 ruby encryption openssl

在执行时cipher.final,它说bad decrypt错误.我试图找出问题.但是,我找不到.你能告诉我的代码有什么问题吗?

这是我的代码:

require 'openssl'
require 'base64'
require 'hex_string'

 result_h ="4fcd6b1ac843a2f8bf13f2e53dd5c1544fcd6b1ac843a2f8"
 key = result_h.to_byte_string

encrypt_str="79994A6EF73DA76C";
cipher = OpenSSL::Cipher.new("DES-EDE3-CBC")
cipher.decrypt
cipher.key = key
data = encrypt_str.to_byte_string
res = cipher.update( data )
res << cipher.final
result_h= res.unpack("H*")[0]
puts result_h.inspect;
Run Code Online (Sandbox Code Playgroud)

错误是:

in `final': bad decrypt (OpenSSL::Cipher::CipherError)
Run Code Online (Sandbox Code Playgroud)

小智 11

我遇到了类似的问题.在具体示例中:

require 'openssl'
require 'base64'
require 'hex_string'

 result_h ="4fcd6b1ac843a2f8bf13f2e53dd5c1544fcd6b1ac843a2f8"
 key = result_h.to_byte_string

encrypt_str="79994A6EF73DA76C";
cipher = OpenSSL::Cipher.new("DES-EDE3-CBC")
cipher.decrypt
cipher.padding = 0
cipher.key = key
data = encrypt_str.to_byte_string
res = cipher.update( data )
res << cipher.final
result_h= res.unpack("H*")[0]
puts result_h.inspect;

=> "0befe932733d76e6"
Run Code Online (Sandbox Code Playgroud)

如果你添加cipher.padding = 0,它会给你一个结果.