解密 PKCS#8 Ruby OpenSSL

Decrypt PKCS#8 Ruby OpenSSL

我需要使用 OpenSSL ruby gem 来解密文件。我已经尝试了每个 post 告诉我做的事情。我尝试使用以下代码:Load PKCS#8 binary key into Ruby

  def box(tag, lines)
    lines.unshift "-----BEGIN #{tag}-----"
    lines.push "-----END #{tag}-----"
    lines.join("\n")
  end

  def der_to_pem(tag, der)
    box tag, Base64.strict_encode64(der).scan(/.{1,64}/)
  end

  pem = der_to_pementer code here('ENCRYPTED PRIVATE KEY', File.read('./file.key'))
  key = OpenSSL::PKey::RSA.new(pem, 'passkey')
  puts key 
  puts pem

我明白了:

-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAzxy...
...ECYUOVC3zgw23aGcFA8z9ghI=
-----END RSA PRIVATE KEY-----

-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFDjBABgk...
...Y948X9Zop7aCnxmWI7vHNts=
-----END ENCRYPTED PRIVATE KEY-----

但我需要这样的东西:

-----BEGIN PRIVATE KEY-----
MIIEvwIBADA...
...ZwUDzP2CEg==
-----END PRIVATE KEY-----

这是有效的控制台代码,但正如我所说,我需要使用 ruby gem:

openssl pkcs8 -inform DER -in "./file.key" -passin pass:passkey -out "./file.key.pem"

不幸的是,openssl gem 无法解密 PKCS#8 格式。但是也有一些hacky方法。

  1. 从 ruby 执行 OpenSSL 命令。
  2. 安装以下 gem (https://github.com/twg/openssl_pkcs8)