encryption - 使用部分私钥审查来解密 RSA 消息?

标签 encryption cryptography rsa private-key

所以,我遇到了这个问题,但我不知道如何解决它。

我有一个 RSA 私钥,其中的一部分被审查了。

$ cat key.pem
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDGlcensoredcensoredcensoredcensored1TUxhnjkCbowxZc
7PIpI1E2Po6aIgCBd9+6i0NUIfYm8vR6kqiqLz8k8o4LYoBkq/9Jx7pgV2Jqhr4u
wvlaQQUzi9c4qPKXp+QGoUu9f1zp8ORIMpeJmF7uA20DC93uba07qdC6twIDAQAB
AoGBAIovDuYnGiiQS6K27L4EY8e/5sbqAwdlTOVlWsfz+ai3DLNiFPSbbT1Wx9G4
4b06X6O258SD1suZ/g/ICnmnxxe5ua3a5+iiDIwGYmBDcNfq5gMq/d+1/UJF/Bb4
A1nuH2iUg6gRTPEpbg2+RYwquyWenFbqfHMgXqbHVGmOXj7hAkEA8rChKjs5zVmd
j9Gk53psry4CtuxRc39NrHuLqat9Iu0MA51Sgv4c+8dgo75DVAnT5PoLBhHJJAVa
e+rUMC4kfwJBANF7jcKzJ2UuPmL6JpbWcyirybjMIm2eCxR5U1bYlNYT+A49oOFS
Eg5woswgCyH9gDPk2Zwpq3qud9HD7Rn0bckCQQDHgwdrRXc2ZybN1eZAWffBaAzZ
PpuTXKOJWaOuX4mnTcLjsdDkWW2QWw8Kbd7B1rZ49kpbugFmeHQzjRDVbwmXAkBm
T3nFBcrP1+4QWSxPrx0/V+eFoe2OrAmtTjQtzkmi5M3Z5q+UXIkFFG3uVBgb2bur
nLHLW26s1Fkg0hgS/RZBAkAFnE+7QvRCW4+v3OsIkN63f+GIjHfCuv8L15RpBLlf
XXQyOmmu8YekTu5vbFHtSAiLyuW1yCeSsNmKYkX6Ew99
-----END RSA PRIVATE KEY-----

如您所见,第一部分行被部分删减了。任务是解密此消息:

Qe7+h9OPQ7PN9CmF0ZOmD32fwpJotrUL67zxdRvhBn2U3fDtoz4iUGRXNOxwUXdJ2Cmz7zjS0DE8
ST5dozBysByz/u1H//iAN+QeGlFVaS1Ee5a/TZilrTCbGPWxfNY4vRXHP6CB82QxhMjQ7/x90/+J
LrhdAO99lvmdNetGZjY=

我的第一个猜测是暴力破解丢失的部分,但这似乎不太现实。

有人知道这是否可能吗?如果是这样,你会怎么做? key 长度为824个字符,被删减的部分为32个字符,但是我不知道被删减的每个字符是否对应私钥中的一个...

最佳答案

你可以解决这个问题 using an online ASN.1 parser (或 openssl asn1parse),您会发现 base 64 字符串 - 中间的文本,位于以 --- 开头的行之间 - 是私钥的 ASN.1 编码。 SEQUENCE 中的第二个元素(已更改)包含模数,而不是私有(private)指数。该结构在 PKCS#1 中定义,这是一个相当可读的标准,也复制在 RFC 3447

模数通常是公开的,但如果您没有公钥,您仍然可以重新创建它: How to factor RSA modulus given the public and private exponent?

关于encryption - 使用部分私钥审查来解密 RSA 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20457680/

相关文章:

Node.js:尝试解密加密的对称 key 时出现无效的 RSAES-OAEP 填充

javascript - 使用 crypto 模块进行 Node.js MD5 解密

python - token 还记得我保存在数据库中的 flask 登录吗?

python - 如何求椭圆曲线的最小 y 坐标 y^2 = x^3 +

algorithm - RSA 分解,c^d % n 的解释

php - 如何使用 php 加密大文件并通过命令行解密?

android - 编译时文件已加密或不是数据库 : ,:select count(*) from sqlite_master;

Java转置密码加密/解密

java - 密码加密并存入数据库

java - org.bouncycaSTLe.crypto.InvalidCipherTextException : block incorrect