Encryption 在私钥中更改几个字符是否有意义地改变它?

Encryption 在私钥中更改几个字符是否有意义地改变它?,encryption,key,jwt,rsa,Encryption,Key,Jwt,Rsa,因此,我们有一个私钥用于签署请求,这些请求随后使用公钥解密。我把它弄得一团糟,换了几个字,比如把“wnoy”改成“xxyy” 我怀疑这会本质上改变密钥,结果解密失败,但事实并非如此。更改是否太小而无法对键进行有意义的更改 谢谢大家! 计算过程中使用的模、指数或CRT参数的任何更改都将导致算法无法生成正确的签名或解密过程中出现错误(很可能产生填充错误) 但是,由于RSA私钥不仅仅是一个数字,它通常保存在PKCS#1(定义为n.1/DER编码结构)中。现在,它取决于您对这个结构所做的更改,如果私钥损

因此,我们有一个私钥用于签署请求,这些请求随后使用公钥解密。我把它弄得一团糟,换了几个字,比如把“wnoy”改成“xxyy”

我怀疑这会本质上改变密钥,结果解密失败,但事实并非如此。更改是否太小而无法对键进行有意义的更改


谢谢大家!

计算过程中使用的模、指数或CRT参数的任何更改都将导致算法无法生成正确的签名或解密过程中出现错误(很可能产生填充错误)

但是,由于RSA私钥不仅仅是一个数字,它通常保存在PKCS#1(定义为n.1/DER编码结构)中。现在,它取决于您对这个结构所做的更改,如果私钥损坏得足够严重。这种结构的编码(如果是PEM私钥)也可能发挥作用

在计算中使用RSA CRT参数时,您很可能更改了公共或专用指数(专用指数或CRT参数用于计算)。在这种情况下,计算将正常进行。您可以更改大约256个字节,而不会导致2048位密钥出现问题

较慢的“普通”RSA计算使用私有指数,这意味着CRT参数的任何更改都不会被注意到(除非结构不再解析)。对于2048位密钥,很可能有超过5 x 128个字节可以更改,而不会导致问题


来自PKCS#1:


这里的CRT(中国剩余定理)参数是prime1、prime2、exponent1、exponent2和finally系数参数。

感谢您抽出时间,Maarten,非常感谢!没问题。如果您想测试一个更改是否会破坏解密,那么可以更改私钥的第20个字节/字符(假定它确实使用上述结构)。你很可能会这样改变模量。必须使用模数,并且它对于每个RSA密钥对都是唯一的。
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
}