1

我目前有一个用 C# 编写的应用程序,它可以获取文件并使用 gpg.exe 对其进行加密

我要做的是,而不是 1. 创建文件(通常来自数据库查询) 2. 加密文件 3. 删除未加密的文件

我想要

  1. 将信息收集到内存中(到字典或列表或其他任何东西中)
  2. 将文本/数据流式传输到 gpg.exe 以输出加密文件

我已经研究了 pipestream,将标准输入重定向到 gpg 进程等,但我还没有找到一种方法来欺骗 gpg.exe 接受流式传输的文本/数据而不是硬盘驱动器上的文件。

最初想如果我可以为 gpg 做,我也可以为 Zip 做,但我想知道这是否可能。找到了一些似乎与 php 相关的 popen 参考,但与 c# 无关。

本质上,我希望以编程方式执行以下操作,其中 text.txt 是内存中流式传输到应用程序的内容,而不是硬盘驱动器上的实际文件。

C:\Program Files\GNU\GnuPG>类型 C:\test.txt | zip > plubber.zip C:\Program Files\GNU\GnuPG>类型 C:\test.txt | gpg -er "mycomp_operations" > Test.pgp

感谢您提供的任何帮助:)

托尼!

4

5 回答 5

1

您可以使用 DotNetZip 在内存中创建一个 zip 文件,但我不知道这将如何与 gpg 内容交互。DotNetZip 可以进行 AES 加密,但这显然是与 PGP 或 GPG 不同的模型。

只需在 GPG 上进行快速谷歌搜索就可以找到
此提示。

看起来他们在一个单独的进程中运行 gpg.exe,坐在那里等待输入。

于 2009-02-24T05:21:15.633 回答
1

请在以下位置查看 BouncyCastle C# 实现:

http://www.bouncycastle.org/csharp/

这将允许 GPG 在没有外部文件的情况下进行进程内加密和解密。我目前正在使用它为 BizTalk 管道组件做同样的事情。

于 2009-05-20T22:45:39.377 回答
1

Benton Stark 为 GnuPG 编写了一个很好的包装器,它演示了(除其他外)如何从流中获取数据,将其通过管道传输到 GPG 可执行文件中,并将输出写回流中 - 全部使用 C#。

本顿用他网站的链接回答了另一个问题。本顿写道:

您可以尝试使用我的 C#(和 VB.NET)的开源和免费 GnuPG 包装器。所有代码均通过 MIT 许可,非 GPL 限制。您可以在 Sourceforge.net 上找到带有源代码的版本。

http://sourceforge.net/projects/starksoftopenpg/

于 2012-08-02T09:39:00.917 回答
0

使用我们的SecureBlackbox组件,您可以避免调用外部程序进行 ZIP 或 PGP 操作。组件使用流操作,不需要临时文件。

于 2010-06-27T19:49:48.290 回答
0

好吧,命名管道完成了您所讨论的大部分工作,但老实说,这不值得……在大多数情况下,临时文件是一种合理的方法。

于 2009-02-23T23:15:39.413 回答