Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 捆绑更新已损坏摘要库。升级到OpenSSL时遇到问题_Ruby On Rails_Ruby_Openssl_Digest_Sha2 - Fatal编程技术网

Ruby on rails 捆绑更新已损坏摘要库。升级到OpenSSL时遇到问题

Ruby on rails 捆绑更新已损坏摘要库。升级到OpenSSL时遇到问题,ruby-on-rails,ruby,openssl,digest,sha2,Ruby On Rails,Ruby,Openssl,Digest,Sha2,我们最近做了一个包更新,但出现了问题。据我们所知,对“digest/hmac”的支持已经停止,因此我想改用OpenSSL: 旧[工作]代码: def signature(str) key = EnvHelpers.google_oauth2_hmac_key Digest::HMAC.hexdigest(str, key, Digest::SHA2) end 新代码: def signature(str) key = EnvHelpers.google_oauth2_h

我们最近做了一个包更新,但出现了问题。据我们所知,对“digest/hmac”的支持已经停止,因此我想改用OpenSSL:

旧[工作]代码:

 def signature(str)
    key = EnvHelpers.google_oauth2_hmac_key
    Digest::HMAC.hexdigest(str, key, Digest::SHA2)
 end
新代码:

def signature(str)
  key = EnvHelpers.google_oauth2_hmac_key
  OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha2"), key, str)
end
当我们运行rspec时:

Failure/Error: OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new("sha2"), key, str)

 RuntimeError:
   Unsupported digest algorithm (sha2).: first num too large
文件的相关部分:

ruby "2.3.3"
gem "openssl", require: true # Gemfile.lock says I am at (2.0.3)

我们愿意接受任何解决问题的建议。这部分代码主要用于我们的Google和Facebook连接流

我在解决问题时回答了自己的问题。造成混淆的主要原因是sha2不是一个特定的算法。然而,sha256将完成这项工作。因此,以下代码似乎工作正常:

def signature(str)
  key = EnvHelpers.google_oauth2_hmac_key
  OpenSSL::HMAC.hexdigest(OpenSSL::Digest::SHA256.new, key, str)
end