Нужен пример для шифрования файлов BouncyCastle PGP в C # - PullRequest
6 голосов
/ 22 апреля 2010

Я пытаюсь зашифровать файлы, используя мой закрытый ключ (в формате ascii) и любой другой открытый ключ (также в формате ascii). Библиотека BouncyCastle выглядит как правильная вещь для использования, но я не могу найти документацию для C #. Может ли кто-нибудь, пожалуйста, помогите мне с примером. Спасибо.

1 Ответ

14 голосов
/ 18 мая 2010

Вот код из примера BouncyCastle. Вы должны взять исходный код и посмотреть в модульных тестах, они содержат примеры. Я обнаружил, что ресурсы Java также полезны. Пример можно найти в источнике в crypto \ test \ src \ openpgp \ examples \ PbeFileProcessor.cs

private static void EncryptFile(
        Stream  outputStream,
        string  fileName,
        char[]  passPhrase,
        bool    armor,
        bool    withIntegrityCheck)
    {
        if (armor)
        {
            outputStream = new ArmoredOutputStream(outputStream);
        }

        MemoryStream bOut = new MemoryStream();

        PgpCompressedDataGenerator comData = new PgpCompressedDataGenerator(
            CompressionAlgorithmTag.Zip);

        PgpUtilities.WriteFileToLiteralData(
            comData.Open(bOut),
            PgpLiteralData.Binary,
            new FileInfo(fileName));

        comData.Close();

        byte[] bytes = bOut.ToArray();

        PgpEncryptedDataGenerator cPk = new PgpEncryptedDataGenerator(
            SymmetricKeyAlgorithmTag.Cast5, withIntegrityCheck, new SecureRandom());

        cPk.AddMethod(passPhrase);

        Stream cOut = cPk.Open(outputStream, bytes.Length);

        cOut.Write(bytes, 0, bytes.Length);

        cOut.Close();

        if (armor)
        {
            outputStream.Close();
        }
    }
...