首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用sha512为JWT生成RSA密钥?

如何使用sha512为JWT生成RSA密钥?
EN

Stack Overflow用户
提问于 2017-06-03 20:25:09
回答 1查看 6.5K关注 0票数 5

我知道可以使用不同的sha算法生成RSA密钥。使用openssl,我似乎没有选择指定密钥生成器应该使用的算法。我怀疑它使用的是sha256

如何在bash或Ruby中使用不同的sha算法(如sha512)生成RSA密钥?openssl库是否支持使用不同的算法生成密钥?如果没有,有谁知道我可以使用的另一个图书馆吗?(在红宝石中,OpenSSL::PKey::RSA似乎不允许选择算法,但文档很难跟踪soo.?)

如果这个问题已经被回答了,我很抱歉,但是我还没有找到答案。

也许我还应该注意(万一我错了):我的理解是,为生成的RSA密钥(即RSA 2048)选择一个大小与选择哈希算法(即sha512)是分开的。

更新-一些背景

我想用RSA密钥对Java令牌进行签名。我使用的JWT库给我的印象是,可以使用不同的哈希算法(RS256、RS384、RS512)生成RSA密钥。但是,使用openssl生成密钥似乎不允许我选择使用什么样的散列算法。

谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-05 14:42:37

RSA密钥和“RSA算法”没有任何哈希算法的概念。

RSA密钥只是两个素数和另一个数(来自(pqe)三重奏,所有其他值都可以导出)。e通常被选择为0x010001 (尽管存在其他合理的值),并且pq是随机生成的(而几乎任何CSPRNG都会有一个支持散列算法,CSPRNG本身通常被认为是一个只释放随机性的黑匣子)。

哈希算法起作用的地方是、RSA签名、

对于RSA签名,原始数据在一个算法下进行散列,然后使用哈希值、算法标识符和私钥生成签名(对于PKCS v1.5签名.对于PSS,还有第二个(实际上是固定的)标识符和一些更多的随机字节)。

"RSASSA-PKCS1-v1_5的JWA (JSON Web算法)标识符是使用SHA(-2)-256".

JWA第3.3节

本节定义了RSASSA-PKCS1-v1_5数字签名算法的使用,该算法在RFC 3447 RFC3447第8.2节中定义,使用SHA-2 SHS散列函数。

这些算法必须使用2048位或更大的密钥。

生成RSASSA-PKCS1-v1_5SHA-256数字签名如下:使用RSASSA-PKCS1-v1_5 -符号生成JWS签名输入的数字签名,使用生成SHA-256散列函数所需的私钥。这是JWS签名值。

(强调地雷)

因此,对RSA密钥没有任何要求,除了规范是在2015年编写的,因此他们规定了一个与2015年兼容的最小密钥大小。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44348254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档