任何人都可以指出我正确的方向。
我正在尝试使用私钥加密字符串服务器端(PHP),然后使用公钥解密客户端(c#)以验证发送的消息的真实性。
由于
答案 0 :(得分:1)
不要试图提出基于RSA等基本加密算法的自定义加密方案。安全协议很难做到;你不仅要考虑加密或签名数据,还要考虑中间攻击,重放攻击,填充oracle攻击等等。
我建议您使用易于使用和理解的标准化,经过良好测试的安全协议:使用HTTPS。
答案 1 :(得分:0)
.NET包含RSA加密/解密的标准功能。
要在PHP中使用RSA,您可以在Google上找到很多实现。
将来您遇到的唯一问题是在PHP和.NET程序之间传输数据:
已添加
RSA是一种简单的算法,不易手工实施。
this解决方案呢?
答案 2 :(得分:0)
您想要做的通常称为签名,而不是加密。
即使在教科书中,RSA签名被解释为“使用私钥加密,使用公钥解密”,实际上它使用的程序略有不同(在实际“加密”之前的部分),因此您具有不同的功能签名而不是加密。
对于PHP中的签名,看起来您可以使用openssl_sign函数。
要检查C#中的签名,可以使用.NET的RSACryptoServiceProvider类及其VerifyData方法。
当然,如果您的目标只是互联网中两个实体之间经过身份验证的转移(即从服务器到客户端),请使用SSL / TLS,这是标准解决方案。如果您将根证书与您的应用程序一起分发,则可以使用自己的证书(或来自您自己的CA的证书)而不是商业CA中的昂贵证书。