shi*_*cky 2 encryption rsa key jwt
所以我们有一个私钥用于签署请求,稍后使用公钥进行解密。我在搞乱它并替换了其中的一些字符,例如将“wnoy”更改为“xxyy”
我怀疑这会本质上改变密钥并导致解密失败,但事实并非如此。这些更改是否太小而无法对密钥产生有意义的更改?
谢谢你!
对计算过程中使用的模数、指数或 CRT 参数的任何更改都将导致算法无法生成正确的签名或解密过程失败(很可能会产生填充错误)。
然而,由于 RSA 私钥不仅仅是一个数字,它通常保存在 PKCS#1 定义的 ASN.1 / DER 编码结构中。现在就看你对这个结构做了什么改变,私钥是否损坏得足够多了。该结构的编码(如果是 PEM 私钥)也可能发挥作用。
您很可能在计算中使用 RSA CRT 参数时更改了公共或私有指数(私有指数或 CRT 参数用于计算)。在这种情况下,计算将照常进行。对于 2048 位密钥,您将有大约 256 个字节可以更改,而不会造成问题。
较慢的“普通”RSA 计算使用私有指数,这意味着对 CRT 参数的任何更改都将不会被注意到(除非结构不再解析)。对于 2048 位密钥,您很可能拥有超过 5 x 128 个字节,可以更改这些字节而不会造成问题!
来自 PKCS#1:
RSAPrivateKey ::= SEQUENCE {
version Version,
modulus INTEGER, -- n
publicExponent INTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
Run Code Online (Sandbox Code Playgroud)
这里的 CRT(中国余数定理)参数是 prime1、prime2、exponent1、exponent2 以及最后的系数参数。
| 归档时间: |
|
| 查看次数: |
276 次 |
| 最近记录: |