【发布时间】:2013-04-22 02:20:52
【问题描述】:
假设我使用这个网站上的算法用公私钥加密和解密数据:
Public Key RSA Encryption in C# .NET 在 CodeProject 上
现在,假设有人使用我的公钥使用另一种算法加密他的数据并将其发送给我。使用不同的算法(如网站上的算法),我可以使用我的私钥解密信息吗?或者这是不可能的,因为算法不同?
我的意思是,假设使用的密钥是正确的,如果使用不同的加密算法,最终结果是否总是相同的?
是否有一些标准的方法来加密信息,使其可以在不同的机器上解密,也许是不同的编程语言?
【问题讨论】:
-
这个人还在使用什么其他算法?只要他们使用 RSA,他们使用什么语言/实现并不重要。
-
你需要使用相同的算法。但是常用的 RSA 方案并不多,因此您只需要指定使用哪一个即可。我会选择一种基于 OAEP 的填充方案。
-
@Matthew 乍一看,代码看起来很糟糕。我不会碰那个。使用适当的 RSA 混合方案,而不是尝试使用 RSA 加密长消息。
-
作为初学者,您可能想了解一些基于 PGP 的 API。我认为 BouncyCastle 有这些方面的东西。但就我个人而言,我不使用 RSA 进行数据加密,所以我没有详细研究。我使用我自己的 NaCl 启发的加密库。
-
您经常使用 RSA 等非对称加密开始对话,它对使用 n 位密钥(与 |n| 成比例)加密的消息的长度有限制。然后,您协商一个与 chaining 块密码(例如 AES)一起使用的对称密钥(允许您加密完整的消息/数据块)。如果您不知道消息的完整长度(想想视频流),您可以在密钥协商阶段之后使用诸如 Salsa20 之类的流密码。
标签: c# encryption cryptography pki