使用两个公钥来加密文件

时间:2012-12-14 21:03:28

标签: cryptography public-key-encryption pgp

我不确定这个问题是否正确,因为这可能更像是一个基于理论的问题。但我也对以下的C#实现感兴趣。它是多么可行

我打算使用PGP加密和解密文件。是否可以使用两个公钥(我的公钥和接收者的公钥)加密文件,以便我能够使用其中一个私钥解密文件。 这种情况可行吗? 那么我应该采取什么方向来正确实施相同的方法。 任何帮助都将受到高度赞赏

4 个答案:

答案 0 :(得分:4)

在高级别(如果使用任何PGP API),是的,您可以将两个或更多公共PGP密钥传递给OpenPGP API(或软件)并对数据进行加密。然后,您将能够使用与任何使用的公共PGP密钥对应的PGP密钥来解密数据。

在较低级别 - OpenPGP始终生成用于加密数据的对称密钥,然后使用一个或多个公共PGP密钥对此密钥进行加密,因此使用的密钥没有区别。

现在,使用什么取决于您使用的平台和开发环境(因为这是一个编程站点,我们假设您要在代码中加密数据)。对于Linux和C,存在GnuPG库。对于Java和C#,BouncyCastle中有一些PGP支持。最后,我们的SecureBlackbox库的OpenPGPBlackbox为许多平台和语言提供了全范围的OpenPGP功能,包括.NET,VCL,ActiveX和C ++。

另一方面,你接受的答案是完全错误的,所以我强烈建议取消接受。

答案 1 :(得分:3)

看看这个维基页面:

http://en.wikipedia.org/wiki/Pretty_Good_Privacy

您将看到实际数据使用随机密钥加密/解密,并使用公钥/私钥对此随机密钥进行加密/解密。

因此,结果您不必使用两个密钥加密文件(数据)。您仍然使用一个随机密钥加密数据。唯一的区别是您使用多个公钥(例如您的和接收者)加密此随机密钥。

结果,任何人都可以使用私钥解密随机密钥并解密数据。

答案 2 :(得分:0)

问题也可能属于crypto.stackexchange.com,但也可以。我不确定你是否理解了PGP的原理。公钥用于加密,私钥用于解密。因此,如果您使用公钥对其进行加密,则接收方会使用他/她的私钥进行解密和/或签名。

有关更多信息,我建议您阅读有关RSA或ElGamal算法的信息。希望它可以帮到你:

这两种算法都是您可以开始的好方法。或者您可能想加入斯坦福大学提供的一些在线课程:

答案 3 :(得分:-4)

我能看到它工作的唯一方法是使用包含两个文件的zip或tar存档:一个用密钥1加密,另一个用密钥2加密。

如果文件是文本,您可以将同一原始文件的两个不同加密版本粘贴到一个文档中。

无法对文件进行加密,因此可以使用我知道的两个不同的密钥对其进行解密。