C # поток текста / данных в zip / gpg вместо того, чтобы передать приложение имя файла? - PullRequest
1 голос
/ 24 февраля 2009

В настоящее время у меня есть приложение, написанное на C #, которое может принимать файл и шифровать это с помощью gpg.exe

То, что я пытаюсь сделать, это вместо 1. Создание файла (обычно из запросов к базе данных) 2. шифрование файла 3. удаление незашифрованного файла

Я хочу

  1. Соберите информацию в память (в словарь, список или что-то еще)
  2. Поток текста / данных в gpg.exe для получения зашифрованного файла выведено

Я изучил pipestream, перенаправляя стандартный ввод в gpg процесс и т. д., но я не нашел способ обмануть gpg.exe в принимать потоковый текст / данные вместо файла на жестком диске.

Изначально подумал, что если бы я мог сделать это для gpg, я мог бы сделать это и для Zip также, но мне интересно, если это вообще возможно. Нашел некоторые ссылки на popen, которые, похоже, связаны с php, но ничего для с #.

По сути, я собираюсь сделать ниже программно с 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

Спасибо за любую помощь, которую вы можете оказать :)

Tony!

Ответы [ 5 ]

1 голос
/ 02 августа 2012

Бентон Старк написал хорошую обертку для GnuPG, которая демонстрирует (среди прочего), как брать данные из потока, направлять их в исполняемый файл GPG и записывать вывод обратно в поток - все на C #.

Бентон ответил на другой вопрос со ссылкой на его сайт. Бентон пишет:

Вы можете попробовать использовать мой открытый исходный код и бесплатную оболочку GnuPG для C # (и VB.NET). Весь код лицензируется через MIT, без ограничений GPL. Вы можно найти релиз с исходным кодом на Sourceforge.net.

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

1 голос
/ 24 февраля 2009

Вы можете использовать DotNetZip для создания zip-файла в памяти, но я не знаю, как это будет взаимодействовать с gpg. DotNetZip может выполнять шифрование AES, но это, очевидно, модель, отличная от PGP или GPG.

Вышел быстрый поиск в Google
этот совет на GPG.

Похоже, что они запускают gpg.exe в отдельном процессе, ожидая ввода.

1 голос
/ 21 мая 2009

Пожалуйста, ознакомьтесь с реализацией BouncyCastle C # по адресу:

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

Это позволит GPG шифровать и дешифровать без внешних файлов. В настоящее время я использую его для того же, что и для компонента конвейера BizTalk.

0 голосов
/ 27 июня 2010

Используя наши SecureBlackbox компоненты, вы можете избежать вызова внешней программы для операций ZIP или PGP. Компоненты работают с потоками и не нуждаются во временных файлах.

0 голосов
/ 24 февраля 2009

Ну, именованные каналы делают большую часть того, что вы обсуждаете, но, честно говоря, это того не стоит ... в большинстве случаев временный файл - это разумный подход.

...