我需要在C#和PHP之间进行加密通信,遗憾的是无法在服务器端使用OpenSSL等模块。我找到了RSACryptoServiceProvider和this article。
据说我无法使用RSACryptoServiceProvider来加密和解密某些内容,因此本文中有一个自己的实现。但我找到了provider.Encrypt(...)和provider.Decrypt(...),为什么不呢?
如果我在C#中有使用RSA的东西,我想到这样的事情: 如果php想要发送一些数据:
(倒退它或多或少相同) 这是可能的还是有任何安全问题?
答案 0 :(得分:0)
基本上,这是一种经典的方法,有一个重要的警告:除非你以某种方式验证接收者的公钥(PHP),否则你很容易受到man-in-the-middle attacks的攻击。</ p>
E.g:
要解决这个问题,您需要确保公钥确实属于PHP,而不是其他任何人。为此,在实践中使用了各种方法,最常见的是PKI,即不是公钥,而是发送certificate,它基本上是由{{3}签名的公钥。 (即具有已知公钥的知名实体),保证公钥的所有者。
关于你的第一个问题:绝对可以使用RSA直接加密/解密消息,只有技术和性能原因(AES比RSA快得多)为什么RSA仅用于加密会话密钥而AES是用于加密/解密消息本身。