2013-04-21 36 views
1

我有一台服务器向我发送一条加密的消息。
此消息使用服务器的私钥进行加密,我试图使用公钥对其解密。
验证方法不符合我的需要,因为它返回true或false。用公钥解密,openssl_public_decrypt像

我发现OpenSSL有一个名为openssl_public_decrypt的方法。
我试图使用OpenSSL .Net包装,并没有设法让它工作。

所以我在这里问是否有另一个库可以使用公钥解密并返回解密的消息,如OpenSSL的一个?

在此先感谢!

+0

这听起来像是一些临时尝试使用RSA进行恢复消息签名。你说“它没有用”,但你没有提供任何细节。例如,您是否在使用“无填充”选项? – 2013-04-21 20:58:15

+0

我刚才说我没有设法让它工作。有2个DLL添加到工作目录或路径,我尝试了两个没有任何结果。我无法加载库,依赖关系丢失。即使我可以使它工作,也有太多限制(必须安装Microsoft Visual C++ 2010 Redistributable Package,两个DLL必须连接到可执行文件等)。 – 2013-04-21 22:01:50

+0

@ Moonlight-Angel - 在我自己处理这个问题之后,我发现将php(整个库)简单地编译到我的应用程序中更简单,只需运行WORKING命令以使用私钥编码的数据的公钥解密 - ---不要被99%的在线欺骗,私钥意味着加密并保留在锁/密钥下,而公共读取数据,但不能重新创建/伪造使用私钥的加密。 – 2015-05-14 01:53:02

回答

0

,如果你想自己做密码,你可能想看看这里 https://stackoverflow.com/a/15706744/706119

我写了另一个问题,但你也许可以用它在你的情况下

这是一个小使用Bigint实现RSA ...你必须自己处理填充,但是你可以用这种方法解密......

+0

感谢您的回答,填充是PKCS#1。所以,如果我理解正确,方法rsaOperation是加密和解密?并且“strip PKCS#1_V1.5填充”注释足以处理解密后的填充?如果是这样,非常感谢你:)。 – 2013-04-21 20:59:35

+0

@ Moonlight-Angel ...你对rsaOperation函数是正确的...关于填充,我没有真正阅读规范,所以在这里没有保证,但它适用于100个随机数据加密的测试用例。 net rsacryptoserviceprovider类,并用该代码解密... – DarkSquirrel42 2013-04-24 00:09:30

+0

它的作用就像一个魅力,填充了。非常感谢 ! – 2013-04-24 11:31:15

0

私钥通常用于解密,但在您描述的情况下,使用另一种方法。服务器使用私钥解密数据,然后将其发送到客户端。这样,当客户端用公钥加密接收到的消息时,它获得原始数据。

如果你正在开发服务器和客户端,你应该尝试这种方法。如果服务器属于其他人,他们可能已经使用它了。

至于实现,你可以尝试内置.Net类不对称加密。假设服务器使用RSA算法进行加密,则可以使用RSACryptoServiceProvider类。

+0

正如你所说,服务器属于其他人,他们不这样做肯定。 – 2013-04-21 19:54:48