当前位置: 首页 > 知识库问答 >
问题:

没有私有指数的RSA解密

曹凯泽
2023-03-14

我想解密使用RSA公钥加密的1024位数据。我有权访问

public key modulus, 
public key exponent, 
prime p, 
prime q, 
exponent1 (d mod(p-1)), 
exponent2 (d mod(q-1)) and 
coefficient ( (1/q) mod p )

我没有访问私钥指数的权限。没有RSA private exponent和所有这些可用的API,有没有办法解密数据?我正在使用openssl进行RSA操作。我听说有了中文提示therem,我们只需要p、q、指数1、指数2和系数就可以进行RSA解密。但我正在寻找openssl中的API。在openssl中有没有什么有用的方法可以在没有私有指数的情况下解密?

共有1个答案

姚向晨
2023-03-14

只需检查openssl源代码以生成密钥对。。。

/* create r0, r1, r2, ctx and - of course - d */

/* calculate d */
if (!BN_sub(r1, p, BN_value_one())) goto err; /* p-1 */
if (!BN_sub(r2, q, BN_value_one())) goto err; /* q-1 */
if (!BN_mul(r0, r1, r2, ctx)) goto err;       /* (p-1)(q-1) */
if (!BN_mod_inverse(d, e, r0, ctx)) goto err; /* d */
return d;

您可能需要在上面生成一些临时变量。。。

 类似资料:
  • 我也尝试了npm ursa模块,不幸的是没有成功。

  • 我试图找到Java(本机或BouncyCastle提供程序)实现,以使用给定的参数{e,n,d}在PKCS#1中生成RSA私钥。 Dan Boneh的一篇论文描述了这样做的算法。PyCrypto(Python)提供了该解决方案,并且Mounir IDRASSI发布了一个独立的实用程序,用于在SFM格式(n,e,d)和CRT格式(p,q,dp,dq,u)之间转换RSA密钥,或者相反。然而,我无法找到

  • 我正在使用JavaScript和Node.js处理一个消息传递项目。创建用户时,服务器使用node.js库生成RSA键区。私钥使用用户密码加密。在webapp上,当用户A向用户B发送消息时,使用用户B的公钥对数据进行加密。当用户B接收到消息时,使用他们的私钥和密码对消息进行解密。 我的问题是,虽然应用程序似乎可以加密数据,但我无法解密数据。抛出的错误消息实际上是“无法解密数据”,这是没有帮助的。

  • ----开始RSA私钥----- 私钥在这里 ----结束RSA私钥----- 如何使用privateKeyPEM字节对象?我想将它与jsch.addIdEntity()一起使用 但我真的不明白如何使用这个byte[]privateKeyPEM变量来设置标识? 这里是我的JSch部分的一个示例:

  • 我一直在阅读一些RSA文献和堆栈溢出问题,但我没有得到明确的答案。 仅给定一个RSA私钥模和私钥指数,这是我所拥有的全部(也足够用于所有密码相关操作),我能得到相关的公钥模和公钥指数吗? 另外,我是否可以仅用这两个参数获得私钥的编码形式?我在java中尝试了以下方法(java不是实际的请求),但是支持它的OpenSSL引擎失败,错误为:04000090:RSA例程:openSSL_internal

  • 我用PHP OpenSSL生成了一个SSH密钥: 这导致$pem如下所示: 但是我无法使用此密钥进行身份验证。在使用它之前,我必须使用以下命令转换它: 转换的结果如下: 两者都是PEM格式,但第二个是RSA私钥。使用第二个,PHP可以登录。所以我需要一个以开头的密钥,而不仅仅是。如何使用PHP和OpenSSL PHP实现创建它?