我目前有一个用C#编写的应用程序可以接收文件并进行加密 它使用gpg.exe
我要做的是,而不是 1.创建文件(通常来自数据库查询) 2.加密文件 3.删除未加密的文件
我想
我研究过pipestream,将标准输入重定向到gpg 进程等,但我还没有找到一种方法来欺骗gpg.exe 接受流式文本/数据而不是硬盘驱动器上的文件。
最初认为如果我可以为gpg做,我也可以为Zip做 同样,但我想知道它是否可能。 发现一些popen似乎与php有关,但没有 对于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
感谢您提供的任何帮助:)
托尼!
答案 0 :(得分:1)
您可以使用DotNetZip在内存中创建一个zip文件,但我不知道它将如何与gpg接口。 DotNetZip可以进行AES加密,但这显然是与PGP或GPG不同的模型。
只是一个快速的googly搜索出现了 GPG this hint。
看起来他们在一个单独的进程中运行gpg.exe,坐在那里等待输入。
答案 1 :(得分:1)
请查看BouncyCastle C#实现:
http://www.bouncycastle.org/csharp/
这将允许GPG进程加密和解密,无需外部文件。我目前正在使用它为BizTalk管道组件做同样的事情。
答案 2 :(得分:1)
Benton已回复another question并提供了指向其网站的链接。本顿写道:
您可以尝试使用我的开源和免费的GnuPG包装来获取C#(和 VB.NET)。所有代码都通过MIT许可,非GPL限制。您 可以在Sourceforge.net找到包含源代码的版本。
答案 3 :(得分:0)
好吧,命名管道完成你正在讨论的大部分内容,但老实说它不值得......在大多数情况下,临时文件是一种合理的方法。
答案 4 :(得分:0)
使用我们的SecureBlackbox组件,您可以避免调用ZIP或PGP操作的外部程序。组件使用流操作,不需要临时文件。