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

时间:2014-07-07 20:42:37

标签: ruby security encryption openssl aes-gcm

我收到错误:

  

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

但我似乎有所有要求:

Ruby版本:

  

$ ruby​​ --version

     

ruby​​ 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

Ruby解释器:

  

$ irb

     

2.1.2:001>要求' openssl&#39 ;;放置OpenSSL :: VERSION

     

1.1.0

     

=>零

     

2.1.2:002> OpenSSL的:: Cipher.ciphers.include? " AES-128-GCM"

     

=>真的

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

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中工作?

2 个答案:

答案 0 :(得分:6)

对我有用的是

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"

答案 1 :(得分:0)

出于某种原因,使用 rbenv install 2.6.3 重新安装 ruby​​ 对我来说很合适。