.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加密解密 的相关文章

  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • 用于检查类是否具有运算符/成员的 C++ 类型特征[重复]

    这个问题在这里已经有答案了 可能的重复 是否可以编写一个 C 模板来检查函数是否存在 https stackoverflow com questions 257288 is it possible to write a c template
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 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