.net core PGP加密解密

2024-04-12

上遇到错误void Encryption().

public void Encryption()
{
    #region PGP Encryption 

    PgpEncryptionKeys encryptionKeys = new PgpEncryptionKeys(@"C:\Keys\PGPPublicKey.asc", @"C:\Keys\PGPPrivateKey.asc", "password");
    PgpEncrypt encrypter = new PgpEncrypt(encryptionKeys);
    using (Stream outputStream = File.Create("C:\\Keys\\EncryptData.txt"))
    {
        encrypter.EncryptAndSign(outputStream, new FileInfo(@"D:\Keys\PlainText.txt"));
    }
    Console.WriteLine("Encryption Done !");

    #endregion
}

I used https://code.msdn.microsoft.com/vstudio/Pretty-Good-Privacy-using-4f473c67 https://code.msdn.microsoft.com/vstudio/Pretty-Good-Privacy-using-4f473c67作为参考。

我对其中的参数感到困惑PgpEncryptionKeys.

有人有工作示例或帮助吗?这是我第一次加密,所以我有点失落。


我正在通过这种方式使用:

我想可以帮助你!

Helper:

public static void EncryptPgpFile(string inputFile, string outputFile, string publicKeyFile, bool armor, bool withIntegrityCheck)
{
    using (Stream publicKeyStream = File.OpenRead(publicKeyFile))
    {
        PgpPublicKey pubKey = ReadPublicKey(publicKeyStream);

        using (MemoryStream outputBytes = new MemoryStream())
        {
            PgpCompressedDataGenerator dataCompressor = new PgpCompressedDataGenerator(CompressionAlgorithmTag.Zip);
            PgpUtilities.WriteFileToLiteralData(dataCompressor.Open(outputBytes), PgpLiteralData.Binary, new FileInfo(inputFile));

            dataCompressor.Close();
            PgpEncryptedDataGenerator dataGenerator = new PgpEncryptedDataGenerator(SymmetricKeyAlgorithmTag.Cast5, withIntegrityCheck, new SecureRandom());

            dataGenerator.AddMethod(pubKey);
            byte[] dataBytes = outputBytes.ToArray();

            using (Stream outputStream = File.Create(outputFile))
            {
                if (armor)
                {
                    using (ArmoredOutputStream armoredStream = new ArmoredOutputStream(outputStream))                   
                    using (Stream outputStream = dataGenerator.Open(armoredStream, dataBytes.Length))
                        outputStream.Write(dataBytes, 0, dataBytes.Length);
                }
                else
                {
                    using (Stream outputStream = dataGenerator.Open(armoredStream, dataBytes.Length))
                        outputStream.Write(dataBytes, 0, dataBytes.Length);
                }
            }
        }
    }
}

private static PgpPublicKey ReadPublicKey(Stream inputStream)
{
    inputStream = PgpUtilities.GetDecoderStream(inputStream);
    PgpPublicKeyRingBundle pgpPub = new PgpPublicKeyRingBundle(inputStream);

    foreach (PgpPublicKeyRing keyRing in pgpPub.GetKeyRings())
    {
        foreach (PgpPublicKey key in keyRing.GetPublicKeys())
        {
            if (key.IsEncryptionKey)
                return key;
        }
    }

    throw new ArgumentException("Can't find encryption key in key ring.");
}

Usage:

EncryptPgpFile(inputFile, outputFile, publicKeyPath, true, true);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.net core PGP加密解密 的相关文章

  • 有没有快速创建集合的方法?

    目前我正在创建一个像这样的新集 std set a s s insert a1 s insert a2 s insert a3 s insert a10 有没有办法创建s在一行 int myints 10 20 30 40 50 std s
  • 在实体框架拦截器中向 DbScanExpression 添加内部联接

    我正在尝试使用实体框架 CommandTree 拦截器通过 DbContext 向每个查询添加过滤器 为了简单起见 我有两个表 一个称为 User 有两列 UserId 和 EmailAddress 另一个称为 TenantUser 有两列
  • FileStream 构造函数和默认缓冲区大小

    我们有一个使用 NET 4 用 C 编写的日志记录类 我想添加一个构造函数参数 该参数可以选择设置文件选项 WriteThrough http msdn microsoft com en us library system io fileo
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 找不到 assimp-vc140-mt.dll ASSIMP

    我已经从以下位置下载了 Assimp 项目http assimp sourceforge net main downloads html http assimp sourceforge net main downloads html Ass
  • ASP.Net Core 内容配置附件/内联

    我正在从 WebAPI 控制器返回一个文件 Content Disposition 标头值自动设置为 附件 例如 处置 附件 文件名 30956 pdf 文件名 UTF 8 30956 pdf 当它设置为附件时 浏览器将要求保存文件而不是打
  • vs2008 c#:Facebook.rest.api如何使用它来获取好友列表?

    如何在此基础上取得进一步的进步 获取好友列表的下一步是什么 string APIKey ConfigurationManager AppSettings API Key string APISecret ConfigurationManag
  • 在 JSQMessagesViewController 中显示 LocationMediaItem

    我刚刚尝试实施LocationMediaItem in my Xamarin iOS应用程序使用JSQMessagesViewController 一切都很顺利 唯一的问题是UICollectionView应该显示位置的单元格永远停留在加载
  • std::forward_as_tuple 将参数传递给 2 个构造函数

    我想传递多个参数以便在函数内构造两个对象 以同样的方式std pair
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • 将标量添加到特征矩阵(向量)

    我刚刚开始使用 Eigen 库 无法理解如何向所有矩阵成员添加标量值 假设我有一个矩阵 Eigen Matrix3Xf mtx Eigen Matrix3Xf Ones 3 4 mtx mtx 1 main cxx 104 13 error
  • 如何分析组合的 python 和 c 代码

    我有一个由多个 python 脚本组成的应用程序 其中一些脚本正在调用 C 代码 该应用程序现在的运行速度比以前慢得多 因此我想对其进行分析以查看问题所在 是否有工具 软件包或只是一种分析此类应用程序的方法 有一个工具可以将 python
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • ASP.NET MailMessage.BodyEncoding 和 MailMessage.SubjectEncoding 默认值

    很简单的问题 但我在 MSDN 上找不到答案 查找 ASP NET 将用于的默认值 MailMessage BodyEncoding and MailMessage SubjectEncoding 如果你不在代码中设置它们 Thanks F
  • cout 和字符串连接

    我刚刚复习了我的 C 我尝试这样做 include
  • 更改 Windows Phone 系统托盘颜色

    有没有办法将 Windows Phone 上的系统托盘颜色从黑色更改为白色 我的应用程序有白色背景 所以我希望系统托盘也是白色的 您可以在页面 XAML 中执行此操作
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new
  • C++0x中disable_if在哪里?

    Boost 两者都有enable if and disable if 但 C 0x 似乎缺少后者 为什么它被排除在外 C 0x 中是否有元编程工具允许我构建disable if按照enable if 哦 我刚刚注意到std enable i
  • Keystore getEntry 在 Android 9 上返回 NULL

    c我已对存储在 Android 密钥库中的登录密码进行了加密和解密 在 Android 9 上 我观察到应用程序在尝试解密密码时崩溃 我无法重现它 但拥有 Pixel 3 的用户是崩溃的设备之一 下面是我如何从密钥库解密密码 private

随机推荐

  • Xdebug 错误的 Zend API 版本号

    我在升级 MAMP 的 xdebug 时遇到问题 我运行的是 2 2 0 版本 遇到了一个已知问题 PhpStorm 和 Xdebug 在 Symfony2 控制器中没有中断 https stackoverflow com question
  • 如何在量角器中重新运行失败的黄瓜场景?

    作为测试的一部分 我使用打字稿语言来开发与量角器兼容的代码 我使用 BDD 框架 其中我在 config ts 中定义了一些黄瓜选项 如下所示 capabilities specs example feature cucumberOpts
  • 我应该如何使用 Outlook 发送代码片段?

    作为一家大公司的程序员 我经常发送包含代码示例的 Outlook 电子邮件 实际上 我会直接在电子邮件中输入代码 这不可避免地会导致问题 因为 Outlook 确实喜欢以令人愉悦但无益的方式设置文本格式 我的代码需要可以从电子邮件中复制出来
  • 快速显示图像UIImageview

    如何在 UIImageview 中显示图像 然后根据按下的按钮更改图像 我很新 请放轻松 为此 首先确保视图控制器中具有可用的图像 通过在故事板上的图像和视图控制器中创建图像之间的关联 我们假设它名为 imageView 通过编程 您可以说
  • 鼠标悬停控件并显示其手柄

    我知道 我可以编写一个函数作为表单中每个组件的事件来执行某些操作 例如 当鼠标悬停时 是否也可以在不将事件链接到特定组件的情况下调用事件函数 而是为应用程序中的所有组件调用事件函数 我想要实现的是显示例如只需将鼠标悬停在任何组件上即可获取句
  • 如何在 VS Code 中调试 Flask 应用程序

    我一直在尝试让调试器在 VS Code 中工作 以便我可以调试我的 Flask 应用程序 我已经尝试了很多选择launch json我觉得已经没有了 以下示例不起作用 https github com DonJayamanne python
  • 使用 strtok 在 C 中解析字符串

    我有这个小源代码 用于测试类似于变量的字符串的解析string我需要在其他项目中使用 include
  • Rails - has_one 关系:关联和非关联对象的范围

    我有这样的关系 一个用户可以拥有零只或一只狗 但狗必须属于某人 dog rb class Dog lt ActiveRecord Base belongs to user end user rb class User lt ActiveRe
  • 在数据库中存储布尔值的最佳数据类型是什么

    在数据库中存储布尔值的最佳数据类型是什么 最常用的 RDBMS 类型 例如 Mysql oracle postgres mssql 都支持它 您可以使用 TINYINT 或位数据类型
  • 如何将图例标题放在左侧?

    以下代码创建一个带有标题的图例 from pylab import plt plot 1 2 2 3 label sdfsdf legend title s s 位于图例的中心 我想知道如何将 s 放在左侧 最简单的选择可能是在标题后面添加
  • Hadoop 性能

    我安装了hadoop 1 0 0并尝试了字数统计示例 单节点集群 完成时间为 2 分 48 秒 然后我尝试了标准的 Linux 字数统计程序 该程序在同一组 180 kB 数据 上运行只需 10 毫秒 是我做错了什么 还是 Hadoop 非
  • 多个 CSS 伪类

    将多个伪类应用于选择器的正确 CSS 语法是什么 我想在列表中除最后一项之外的每一项之后插入 我正在使用以下CSS ul phone numbers li after content ul phone numbers li last chi
  • Oracle JDBC 和 Oracle CHAR 数据类型

    我在 Oracle JDBC 驱动程序的处理方面遇到了一个棘手的问题CHAR数据类型 让我们看一下这个简单的表格 create table x c char 4 insert into x c values a inserts a 所以当我
  • addEventListener,for(),索引。如何使用闭包? [复制]

    这个问题在这里已经有答案了 我有这个代码 var items this llistat getElementsByTagName a for var i 0 i lt items length i items i addEventListe
  • 如何使用MediaSession.setMediaButtonReceiver(PendingIntent)恢复播放

    当我的应用程序停止时单击耳机按钮时 我试图能够从我的应用程序开始音乐播放 我可以使用 MediaSession CallbackonMediaButtonEvent 或现已弃用的registerMediaButtonEventReceive
  • jQuery 未在引导模块中定义

    我想为我的网站使用 bootstrap 使用 node js 但我有以下错误 var www node modules bootstrap js transition js 59 jQuery ReferenceError jQuery 未
  • 在Android应用程序中集成视频文件作为应用程序背景

    我需要使用视频作为背景 首先 我将视频文件放在可绘制文件夹中 并称为背景LinearLayout在 main xml 中 但在运行该应用程序时 我只看到黑屏 然后我尝试使用VideoView并称其如下
  • Emacs - 调用时出错(服务器启动)

    我目前在 Windows Vista SP1 中使用 GNU Emacs 23 0 93 1 在我的 emacs 文件中 我调用 server start 这导致消息错误目录 emacs d server 不安全 有没有人见过这个并知道修复
  • 如何在c中将日期时间转换为unix时间戳?

    场景是 我使用 libexif 获取格式为 YYYY MM DD HH MM SS 的日期时间 为了最大限度地减少节省成本 我想将日期时间转换为unix时间戳或类似的值 只需要64位或32位 c 有什么明确的方法吗 你可以尝试组合使用str
  • .net core PGP加密解密

    上遇到错误void Encryption public void Encryption region PGP Encryption PgpEncryptionKeys encryptionKeys new PgpEncryptionKeys