假设我使用此站点上的算法使用公私钥加密和解密数据:
CodeProject 上C# .NET 中的公钥 RSA 加密
现在,假设有人使用我的公钥使用另一种算法加密他的数据并将其发送给我。使用不同的算法(如网站上的算法),我可以使用我的私钥解密信息吗?或者这是不可能的,因为算法不同?
我的观点是,假设使用的密钥是正确的,如果使用不同的加密算法,最终结果是否总是相同的?
是否有一些标准的方法来加密信息,使其可以在不同的机器上解密,也许是不同的编程语言?
假设我使用此站点上的算法使用公私钥加密和解密数据:
CodeProject 上C# .NET 中的公钥 RSA 加密
现在,假设有人使用我的公钥使用另一种算法加密他的数据并将其发送给我。使用不同的算法(如网站上的算法),我可以使用我的私钥解密信息吗?或者这是不可能的,因为算法不同?
我的观点是,假设使用的密钥是正确的,如果使用不同的加密算法,最终结果是否总是相同的?
是否有一些标准的方法来加密信息,使其可以在不同的机器上解密,也许是不同的编程语言?
进行了一些讨论,但这是我回答问题的谦虚尝试:
使用不同的算法(如网站上的算法),我可以使用我的私钥解密信息吗?或者这是不可能的,因为算法不同?
您肯定无法解密数据。通常,您需要算法和密钥完全匹配。然而,可能不同的是:用于加密/解密的平台、操作系统、硬件、语言或程序。这是因为算法充当具有明确定义的规范的公共合约,只要所有公共 API 呈现相同的结果,实现可能会有所不同。
我的观点是,假设使用的密钥是正确的,如果使用不同的加密算法,最终结果是否总是相同的?
几乎每次这些都会有不同的结果(几乎可以说,我只是不知道任何这样的算法)。您需要完全匹配算法和所需的密钥。
是否有一些标准的方法来加密信息,使其可以在不同的机器上解密,也许是不同的编程语言?
是的,例如,RSA 保证您的私钥安全并共享您的公钥。这是 HTTPS 首先要做的事情。每个拥有公钥的人都可以解密用私钥加密的数据。
或者,您可以使用 AES,一种具有单个密钥的对称算法来加密/解密。这是 HTTPS 所做的第二件事。假设您仅在受信任方之间共享密钥,则双方都可以加密和解密(但其他人都不能,因为他们没有密钥)。