use*_*959 6 ruby security encryption openssl aes-gcm
我收到错误:
不支持的密码算法(AES-256-GCM)(RuntimeError)
但我似乎有所有要求:
Ruby版本:
$ ruby --version
红宝石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'; 放入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>'
Run Code Online (Sandbox Code Playgroud)
如何让GCM在ruby中工作?
对我有用的是
OpenSSL::Cipher.new('aes-128-gcm')
Run Code Online (Sandbox Code Playgroud)
我不确定为什么你的方法会出错.
编辑:
这可能是一个大/小写的问题.这可能是一个真正的错误.
以下作品:
OpenSSL::Cipher::AES.new(128, :CBC)
Run Code Online (Sandbox Code Playgroud)
因为我们发现"AES-128-CBC"(全部大写)OpenSSL::Cipher::AES.ciphers.AES.new似乎用大写字符搜索其密码.
因此,以下不起作用:
OpenSSL::Cipher::AES.new(128, :GCM)
Run Code Online (Sandbox Code Playgroud)
因为它"aes-128-gcm"在密码列表中.
| 归档时间: |
|
| 查看次数: |
2804 次 |
| 最近记录: |