代码之家  ›  专栏  ›  技术社区  ›  Daniel Brink

需要c中bouncyCastle pgp文件加密的示例#

  •  6
  • Daniel Brink  · 技术社区  · 15 年前

    我正在尝试使用我的私钥(ascii格式)和任何其他公钥(ascii格式)加密文件。BouncyCastle库看起来是正确的使用方法,但我找不到C_的文档。有人能帮我举个例子吗?谢谢您。

    1 回复  |  直到 14 年前
        1
  •  14
  •   Emmanuel    15 年前

    下面是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();
            }
        }