Ruby SHA1 标志返回与 OpenSSL 标志不同的结果

标签 ruby openssl

当我在 linux 命令行执行 openssl 命令时:

echo -n "aaaaaa" | /usr/bin/openssl dgst -sha1 -sign myprivatekey.pem | /usr/bin/openssl enc -base64 -A

我得到这个结果:

2GmJqeVDbGFsaJjMKcjW4JhPYBdI7mSwNYKrmdHtM2xpWVVSdhXc0d3zidF790mz9n9nb2yX+jMZpzNNd8xAx/WeSRxnYCg0Y/TXoMG4ynbCnttpzxrN08TJNggLOz0fWbzfMQZbHy+WghU8SlOhQExngtH8yvtE71060C/KKtI=

然后通过运行这个 ruby​​ 脚本:

require 'openssl'
require 'base64'

pkey = OpenSSL::PKey::RSA.new(File.read("myprivatekey.pem"))
plaintext = OpenSSL::Digest::SHA1.new("aaaaaa").digest
enc = pkey.private_encrypt(plaintext)
puts Base64.encode64(enc)

结果不同:

rHdXk0itL88vrz84QvCpRHM7J1w/B+Jaoo7n3fQ1D0UiPYQ4jClLQcO3iQLVifq/jMXBYvPLzQVZa/J9D7gjOwKYkKlu5c18HV8U4h0jXM7yTNCYlekhVsBThUcfb2kb1Lf2Ow3cjwL7ss66bvUc9+bwDGHtp3uJ9/GbJlZdphE=

谁能帮帮我?为什么我在 ruby 部分做错了?我想复制linux命令行命令!

最佳答案

找到解决方案... signing 与 private_encrypt 不同......但仍然不明白为什么:)

require 'openssl'
require 'base64'

pkey = OpenSSL::PKey::read(File.read("privatekey.pem"))
enc = pkey.sign(OpenSSL::Digest::SHA1.new,"aaaaaa")       
puts Base64.encode64(enc)

关于Ruby SHA1 标志返回与 OpenSSL 标志不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15929401/

相关文章:

ssl - 尝试在 Rsyslog 服务器上设置 TLS,s_client 连接但未获得证书,挂起

openssl - 如何将 SSL_CERT_FILE 用于 OpenSSL Windows (OpenSSL 1.0.1c)

ssl - 使用 OpenSSL 滚动我自己的 SSL,不工作

c - 使用 gcc 版本 4.3.3 构建 OpenSSL 1.1.1c 时出现问题

ruby - 如何从 DateTime 值中删除区域?

ruby-on-rails - 限制 Nokogiri 中 XPath 的搜索范围

ruby-on-rails - 在 class_eval block 或 instance_eval block 中定义的 Rails 作用域?

Windows 上用于 CUDA 的 OpenSSL 引擎

ruby-on-rails - ruby 中 CSV.open( ) 的第二个参数/参数是什么?

javascript - Rails 相当于 setInterval?