非对称加密和解密

时间:2013-04-28 09:11:42

标签: c# encryption cryptography pki

我们假设我使用此网站上的算法使用公钥 - 私钥加密和解密数据:

CodeProject上的

Public Key RSA Encryption in C# .NET

现在,让我们说有人使用我的公钥使用其他算法加密他的数据并将其发送给我。使用不同的算法(如网站上的算法),我能够使用我的私钥解密信息吗?或者这是不可能的,因为算法不同?

我的观点是,假设使用的密钥是正确的,如果使用不同的加密算法,最终结果是否总是相同的?

是否有一些标准的方法来加密信息,使其可以在不同的机器上解密,也许是不同的编程语言?

1 个答案:

答案 0 :(得分:8)

进行了一些讨论,但这是我谦虚地尝试回答这些问题:

  

使用不同的算法(如网站上的算法),我是否可以使用私钥解密信息?或者这是不可能的,因为算法不同?

您肯定不会能够解密数据。通常,您需要完全匹配算法和密钥。然而,可能有什么不同:平台,操作系统,硬件,语言或用于加密/解密的程序。这是因为算法充当具有明确定义的规范的公共合同,并且只要所有公共API呈现相同的结果,实现就可以是不同的。

  

我的观点是,如果使用不同的加密算法,假设使用的密钥是正确的,那么最终结果是否总是相同的?

几乎每次这些都会有不同的结果(说得差不多,我只是不知道任何这样的算法)。您需要完全匹配算法和所需的密钥。

  

是否有一些标准的方法来加密信息,使其可以在不同的机器上解密,也许是不同的编程语言?

是RSA,例如,保护您的私钥安全并共享您的公钥。这就是HTTPS首先做的事情。拥有公钥的每个人都可以解密使用私钥加密的数据。

或者,您可以使用AES,一种带有单个密钥的对称算法来加密/解密。这就是HTTPS的第二个功能。鉴于您只在受信任方之间共享密钥,两者都可以加密和解密(但没有其他人可以,因为他们没有密钥)。