Как зашифровать файл с открытым ключом, который был добавлен в текущую связку ключей, с использованием c # и командной строки?

Спасибо.

2
iburlakov 31 Июл 2009 в 22:06

4 ответа

Лучший ответ

Вы можете использовать мою реализацию, которую я написал год назад. Я знаю, что это немного некрасиво.

Вам нужен pgp.exe и некоторая предыстория о нем. см. мое сообщение в блоге .

/// <summary>
        /// Encryps given file using PGP Public Key
        /// </summary>
        /// <param name="filename"></param>
        public string Encrypt(string filename, bool isBinary, ref string outstr){

            string outputfilename = filename;


            //We use stringbuilder for performance considerations
            StringBuilder sb = new StringBuilder();
            sb.Append("/c ");
            sb.Append("");
            sb.Append(PGPLocation);
            sb.Append(" +force -es ");
            sb.Append("\"");
            sb.Append(filename);
            sb.Append("\" ");
            sb.Append(ToUserName);
            sb.Append(" -u ");
            sb.Append(MyUserName);

            sb.Append(" -z ");
            sb.Append(PassPhrase);
            sb.Append(" ");

            // Use binary indicator because PGP produces different outputs for binary and plain text files
            if (isBinary)
                sb.Append("-a");

            proc.StartInfo.Arguments = sb.ToString();


            //proc.StartInfo.Arguments = "/c pgp +force -es "+filename+" cumacam -u bugra";


            proc.Start();
            if (WaitForInfinity)
                proc.WaitForExit();
            else
                proc.WaitForExit(WaitTime);
            //string res = proc.StandardOutput.ReadToEnd();

            outstr = proc.StartInfo.Arguments;
            if (proc.HasExited)
            {
                int ab = proc.ExitCode;
                if (ab != 0)
                {
                    FireError(Convert.ToInt32(ErrorTypes.PGPEncryptError), "Erro No: " + ab.ToString() + "in PGP. Details: "+" "+proc.StandardOutput.ReadToEnd());
                    return null;
                }
                else
                    if (!isBinary)
                        return outputfilename+".pgp";
                return outputfilename + ".asc";
            }

            return null;
        }
1
ercu 1 Авг 2009 в 20:21

SharpPrivacy - OpenPGP для C #

1
Dinah 31 Июл 2009 в 18:12

Вы можете использовать gnupg-sharp, если у вас все в порядке с GPL и GnuPG.

1
Vinay Sajip 31 Июл 2009 в 18:10

Итак, для шифрования и дешифрования PGP можно использовать криптографическую библиотеку Bouncy Castle для C #; это то, что мы используем внутри компании для работы с PGP-шифрованием. Он полностью автономен, поэтому не зависит от существующих программ или библиотек.

Однако имейте в виду, что это библиотека, а не программа командной строки. Исходный код поставляется с некоторыми примерами программных утилит командной строки, которые вы можете создать, если вам нужно использовать его CLI.

4
Randolpho 31 Июл 2009 в 18:12