Public Private Key Crypto - PHP& C#

时间:2011-11-24 19:50:23

标签: c# php cryptography public-key-encryption private-key

任何人都可以指出我正确的方向。

我正在尝试使用私钥加密字符串服务器端(PHP),然后使用公钥解密客户端(c#)以验证发送的消息的真实性。

由于

3 个答案:

答案 0 :(得分:1)

不要试图提出基于RSA等基本加密算法的自定义加密方案。安全协议很难做到;你不仅要考虑加密或签名数据,还要考虑中间攻击,重放攻击,填充oracle攻击等等。

我建议您使用易于使用和理解的标准化,经过良好测试的安全协议:使用HTTPS。

答案 1 :(得分:0)

.NET包含RSA加密/解密的标准功能。

要在PHP中使用RSA,您可以在Google上找到很多实现。

将来您遇到的唯一问题是在PHP和.NET程序之间传输数据:

  • 您可能必须使用base64字符串
  • 如果您想使用GET或POST发送数据,则必须使用this解决方案

已添加

RSA是一种简单的算法,不易手工实施。

this解决方案呢?

讨论了同一主题herehere

答案 2 :(得分:0)

您想要做的通常称为签名,而不是加密

即使在教科书中,RSA签名被解释为“使用私钥加密,使用公钥解密”,实际上它使用的程序略有不同(在实际“加密”之前的部分),因此您具有不同的功能签名而不是加密。

对于PHP中的签名,看起来您可以使用openssl_sign函数。

要检查C#中的签名,可以使用.NET的RSACryptoServiceProvider类及其VerifyData方法。

当然,如果您的目标只是互联网中两个实体之间经过身份验证的转移(即从服务器到客户端),请使用SSL / TLS,这是标准解决方案。如果您将根证书与您的应用程序一起分发,则可以使用自己的证书(或来自您自己的CA的证书)而不是商业CA中的昂贵证书。