8

我收到错误:

不支持的密码算法 (AES-256-GCM) (RuntimeError)

但我似乎有所有的要求:

红宝石版本:

$红宝石--版本

红宝石 2.1.2p95

OpenSSL 确实列出了 gcm:

$ openssl enc -help 2>&1 | grep gcm

-aes-128-ecb -aes-128-gcm -aes-128-ofb
-aes-192-ecb -aes-192-gcm -aes-192-ofb
-aes-256-ecb -aes-256-gcm -aes -256-ofb

红宝石解释器:

$ irb

2.1.2 :001 > 需要“openssl”;放 OpenSSL::VERSION

1.1.0

=> 无

2.1.2 :002 > OpenSSL::Cipher.ciphers.include?“aes-128-gcm”

=> 真

但是我在运行此代码时遇到错误:

2.1.2 :001 > require 'openssl'
 => true 
2.1.2 :002 > cipher = OpenSSL::Cipher::AES.new(128, :GCM)
RuntimeError: unsupported cipher algorithm (AES-128-GCM)
    from /home/m/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/openssl/cipher.rb:27:in `initialize'
    from /home/m/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/openssl/cipher.rb:27:in `block (3 levels) in <class:Cipher>'
    from (irb):2:in `new'
    from (irb):2
    from /home/m/.rvm/rubies/ruby-2.1.2/bin/irb:11:in `<main>'

如何让 GCM 在 ruby​​ 中工作?

4

2 回答 2

7

对我有用的是

OpenSSL::Cipher.new('aes-128-gcm')

我不确定为什么您的方法会出错。

编辑:

这可能是大写/小写问题。这可能是一个实际的错误。

以下作品:

OpenSSL::Cipher::AES.new(128, :CBC)

因为我们"AES-128-CBC"OpenSSL::Cipher::AES.ciphers. AES.new似乎用大写字符搜索它的密码。

因此,以下内容不起作用:

OpenSSL::Cipher::AES.new(128, :GCM)

因为它"aes-128-gcm"在密码列表中。

于 2014-07-07T21:14:24.207 回答
0

出于某种原因,我重新安装了 rubyrbenv install 2.6.3​​ 。

于 2021-01-22T16:36:16.977 回答