我有一个RSA公钥模数和指数字符串。
我想用这两个字符串创建一个OpenSSL::PKey::RSA
。
基本上,它们是:
*n= 'long string'
*e= '4-字符串'
在Ruby中如何做到这一点?最终目标是把它放到JWT gem中。
更新
我目前使用的是Ruby 2.3.1,所以这样做是可行的:
key = OpenSSL::PKey::RSA.new
key.e = OpenSSL::BN.new(Base64.decode64(e), 2)
key.n = OpenSSL::BN.new(Base64.decode64(n), 2)
但是,它在升级过程中不起作用。
4条答案
按热度按时间up9lanfz1#
我让它以这种方式工作,基于这个python实现:
https://github.com/jpf/okta-jwks-to-pem/blob/master/jwks_to_pem.py
v440hwme2#
您可以使用
JSON::JWT
gem(https://rubygems.org/gems/json-jwt,https://github.com/nov/json-jwt)Ruby JWT(https://rubygems.org/gems/jwt,https://github.com/jwt/ruby-jwt/blob/master/lib/jwt/jwk/rsa.rb)也可以实现同样的效果。
xpszyzbs3#
对于Ruby 2.4+,您应该使用:用途:
如果你没有
d
,你可以设置为nil
。50pmv0ei4#
接受的答案在OpenSSL v3中对我不起作用。查看此线程以获得适用于OpenSSL v3的解决方案。
使用“模数”和“指数”在OpenSSL v3中创建RSA密钥在Ruby on Rails中不起作用
解决方案:
我发现第一个Gist在 * OpenSSL v3之前 * 工作,但是它在OpenSSL v3中不工作。值得庆幸的是,这位伟大的家伙在评论中分享了如何在OpenSSL v3中实现这一点。查看第二个链接以获得Gist或下面的代码以获得解决方案。
在第二个链接中分享这里提供的Gist代码(以防万一):
希望这对你有帮助!