使用BouncyCastle加密文件,并且仅使用C#中的公共密钥?

时间:2019-04-30 17:42:19

标签: c# encryption bouncycastle pgp

PGP的新手,我正在尝试通过C#控制台应用程序加密文件。在我的研究中,似乎BouncyCastle是最受欢迎的工具之一。我找到了下面的文章,除了我只有公共密钥外,它似乎可以正常工作。 http://burnignorance.com/c-coding-tips/pgp-encryption-decryption-in-c/

环顾四周,我还没有找到可以仅使用公共密钥进行加密的示例。我遇到的所有示例都希望使用公钥,私钥和密码。

3 个答案:

答案 0 :(得分:0)

我找到了一个GitHub文件,可以使您非常接近所需的文件。它为您提供了Encrypt(使用公钥)和Decrypt(使用私钥)方法。它使用Bouncy Castle API和AES算法。

https://gist.github.com/dziwoki/cc41b523c2bd43ee646b957f0aa91943

答案 1 :(得分:0)

使用PGP的主要方法是,使用接收者的公共密钥进行加密,并使用私有密钥对消息进行签名。然后,接收方可以使用其私钥解密,并使用您的公钥验证签名。密码用于私钥。

此设置是设计PGP时要做出的设计决定,以达到PGP的名称-很好的隐私性。

答案 2 :(得分:0)

我也是使用 C# 处理 PGP 的新手,我建议使用 PgpCore 项目,这使得使用 Bouncy Castle 更容易。有一种方法可以完全按照您的意愿行事。像这样:

using (var pgp = new PGP())
{
    await pgp.EncryptFileAsync(@"C:\TEMP\unencrypted-input.txt", @"C:\TEMP\encrypted-output.pgp", @"C:\TEMP\public.asc");
}

有关更多选项,请参阅 https://github.com/mattosaurus/PgpCore#encrypt