如何完全序列化/反序列化 RSAParameters 对象

2024-02-18

The RSAParameters对象不支持私钥数据的序列化。如何完整地序列化和反序列化私钥?


以下代码可用于序列化和反序列化RSAParameters对象,使用您自己选择的序列化器。

using System;
using System.Runtime.Serialization;
using System.Security.Cryptography;

[Serializable]
public class RSAParametersSerializable : ISerializable
{
    private RSAParameters _rsaParameters;

    public RSAParameters RSAParameters
    {
        get
        {
            return _rsaParameters;
        }
    }

    public RSAParametersSerializable(RSAParameters rsaParameters)
    {
        _rsaParameters = rsaParameters;
    }

    private RSAParametersSerializable()
    {
    }

    public byte[] D { get { return _rsaParameters.D; } set { _rsaParameters.D = value; } }

    public byte[] DP { get { return _rsaParameters.DP; } set { _rsaParameters.DP = value; } }

    public byte[] DQ { get { return _rsaParameters.DQ; } set { _rsaParameters.DQ = value; } }

    public byte[] Exponent { get { return _rsaParameters.Exponent; } set { _rsaParameters.Exponent = value; } }

    public byte[] InverseQ { get { return _rsaParameters.InverseQ; } set { _rsaParameters.InverseQ = value; } }

    public byte[] Modulus { get { return _rsaParameters.Modulus; } set { _rsaParameters.Modulus = value; } }

    public byte[] P { get { return _rsaParameters.P; } set { _rsaParameters.P = value; } }

    public byte[] Q { get { return _rsaParameters.Q; } set { _rsaParameters.Q = value; } }

    public RSAParametersSerializable(SerializationInfo information, StreamingContext context)
    {
        _rsaParameters = new RSAParameters()
        {
            D = (byte[])information.GetValue("D", typeof(byte[])),
            DP = (byte[])information.GetValue("DP", typeof(byte[])),
            DQ = (byte[])information.GetValue("DQ", typeof(byte[])),
            Exponent = (byte[])information.GetValue("Exponent", typeof(byte[])),
            InverseQ = (byte[])information.GetValue("InverseQ", typeof(byte[])),
            Modulus = (byte[])information.GetValue("Modulus", typeof(byte[])),
            P = (byte[])information.GetValue("P", typeof(byte[])),
            Q = (byte[])information.GetValue("Q", typeof(byte[]))
        };
    }

    public void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        info.AddValue("D", _rsaParameters.D);
        info.AddValue("DP", _rsaParameters.DP);
        info.AddValue("DQ", _rsaParameters.DQ);
        info.AddValue("Exponent", _rsaParameters.Exponent);
        info.AddValue("InverseQ", _rsaParameters.InverseQ);
        info.AddValue("Modulus", _rsaParameters.Modulus);
        info.AddValue("P", _rsaParameters.P);
        info.AddValue("Q", _rsaParameters.Q);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何完全序列化/反序列化 RSAParameters 对象 的相关文章

  • SingleOrDefault异常处理

    我有一个示例代码 它调用 SingleOrDefault 方法 3 次 并在任何序列具有多个匹配元素时记录异常 如果我想检查这段代码的哪一部分抛出异常 问题就开始了 是否可以从此异常中获取一些有用的信息 例如谓词参数或集合类型以进行更详细的
  • 如何更改 Settings.settings 值的值

    我有一个简单的控制台应用程序 每天运行 由 Windows 任务计划程序调用 并且取决于每次应用程序运行时递增的值 为了保留这个值 我选择使用 Settings Settings 文件 因此 我有一个名为 RunNumber 和 Scope
  • 将参数传递给模板类型的 C# 泛型 new()

    添加到列表时 我试图通过其构造函数创建一个 T 类型的新对象 我收到编译错误 错误消息是 T 创建变量实例时无法提供参数 但我的类确实有一个构造函数参数 我怎样才能做到这一点 public static string GetAllItems
  • 无法转换类型为“NHibernate.Collection.Generic.PersistentGenericBag”的对象

    public List
  • .NET PInvoke 可以从用户指定的目录动态加载本机 dll 吗?

    我有一个 NET 应用程序 需要加载一个本机库 其位置由用户指定 PInvoke 看起来只会从全局搜索路径 或编译时指定的路径 加载 最好的方法是创建一个在运行时调用 LoadLibrary 的 C CLI 程序集吗 C CLI 会比 C
  • Activator.CreateInstance 缺少方法异常

    我在 C dll 中有一个类 其中包含以下类 public class RequiredTask Base BaseObject public string Name get set public string Description ge
  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 如何为 Jackson 编写一个包罗万象的(反)序列化器

    当您提前知道类型时 编写自定义序列化器非常容易 例如 MyType一个人可以写一个MyTypeSerializer extends StdSerializer
  • 如何更改锁屏自定义文本(所有者信息)?

    我写了程序代码 String message This is test Settings System putString context getContentResolver Settings Secure LOCK PATTERN EN
  • 允许 iframe 跨域链接到目标父框架

    我有 2 个域 域 1 上的一个页面使用 iframe 加载域 2 中的内容 如何允许来自domain2 iframe 内 的链接在domain1 的完整父框架中打开 我一直在关注IE和w3c的新沙箱属性 http www w3 org T
  • T-sql、刻度、时间戳

    是否有可能在 t sql 中获得像 DateTime Ticks 这样的 C 内容 感谢帮助 您不太可能从 SQL 中获得与 DateTime Ticks 相同的精度 因为 SQL 不能以那么高的精度表达时间 SQL Server 只存储大
  • 将新行添加到表后如何更新 datagridview 的行列表

    我有一个 datagridview 在表单的加载事件上填充了表集合 我还有一个由用户填写的表单 并将新行添加到表 onclick 事件 我想在向该表添加新行后更新 datagridview表 我使用绑定到绑定数据源的 sqladapter
  • 在.NET Core RC2中构建.exe文件

    每次我使用新的 NET Core RC2 模板构建项目时not提供了一个可运行的 EXE文件 如果我按 F5 来调试我的控制台应用程序 它可以通过 C Program Files dotnet dotnet exe 应用 如果我使用 dot
  • 什么是 System.ContextBoundObject?

    What is 上下文绑定对象 http msdn microsoft com en us library system contextboundobject aspx用于 该文档提到了 上下文 它似乎是以编程方式定义的 但未能给出任何解释
  • 如何使用 EPPlus 在单个 Excel 单元格中加载包含逗号的文本

    我正在尝试EPPlus 库 http epplus codeplex com 我被困在这个问题上 我必须在单个单元格中加载文本 但是当该文本包含逗号时 我使用的代码会沿着多个单元格 沿着正确的方向 分割文本 这是我用来加载文本的代码 usi
  • C# 5 async/await 线程机制感觉不对?

    为什么让调用线程进入异步方法直到内部 等待 一旦调用异步方法就生成一个线程 这不是更干净吗 这样您就可以确定异步方法会立即返回 您不必担心在异步方法的早期阶段没有做任何昂贵的事情 我倾向于知道某个方法是否要在 我的 线程上执行代码 不管是堵
  • 为什么浏览器允许onmousedown JS改变href?

    我很长时间以来都注意到 当您尝试复制链接位置或在 Facebook 上打开链接时 它会修改链接并将其传递给l php 例如 我可以被发送到 http www facebook com l php u http 3A 2F 2Fwww goo
  • 使用 C# 和 wpf 创建类似 Dock 的应用程序

    我需要创建一个与我们购买笔记本电脑时获得的应用程序类似的应用程序 仅当鼠标指针到达窗口顶部时它才可见 那么我怎样才能使用 C 4 0 来做到这一点呢 http www notebookcheck net uploads pics win2
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan
  • DataContractSerializer 事件/委托字段问题

    在我的 WPF 应用程序中 我正在使用DataContractSerializer序列化对象 我发现它无法序列化具有事件或委托声明的类型 考虑以下失败的代码 Serializable public abstract class BaseCl

随机推荐

  • 回拨例程

    In the Learning OpenCV书 我来到这个词callback 有时与routine as callback routine 当我们说的时候我们是什么意思callback Thanks 什么是回调函数 简单来说 一个回调函数是
  • 德摩根规则解释

    你能解释一下吗德摩根规则 https en wikipedia org wiki De Morgan 27s laws尽可能简单 例如对于只有中学数学背景的人 布尔代数概述 我们有两个价值观 T and F 我们可以通过三种方式组合这些值
  • Crontab - 每 3 小时重新启动 apache [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 由于访问者滞后 我的服务器目前遇到了一些问题 我认为最好的解决方案是每 2 3 小时左右重新启动 apache我如何通过 cronjob 来做到这一点
  • PHP image卷积() 在左上角留下黑点

    我正在尝试使用以下代码锐化调整大小的图像 imageconvolution imageResource array array 1 1 1 array 1 16 1 array 1 1 1 8 0 当透明PNG图像被锐化时 使用上面的代码
  • 将变量从自定义服务器传递到 NextJS 中的组件

    我已经在 NextJS 中设置了一个自定义服务器 如图所示here https github com zeit next js custom server and routing用于自定义路由 服务器 js app prepare then
  • 在networkx图上显示边权重

    我有一个包含 3 列的数据框 f1 f2 和分数 我想绘制一个图表 使用 NetworkX 来显示节点 在 f1 和 f2 中 和边缘值作为 分数 我能够用节点及其名称绘制图表 但是 我无法显示边缘分数 有人可以帮忙吗 这是我到目前为止所拥
  • mPDF自动打印问题

    我正在使用 php 类 mpdf 它可以很好地生成 PDF 我试图让文件在渲染时自动打印 即打开打印对话框 我使用下面的代码扩展了核心功能 将 JavaScript 添加到 pdf 中 pdf 已渲染 但没有自动打印 任何帮助都会很棒 谢谢
  • 如何在 Gitlab CI 的构建脚本中设置(环境)变量?

    我有一个虚拟构建脚本Gitlab CI pwd ci app path pwd echo INFO current directory ci app path 当系统开始构建过程时 我得到以下输出 pwd home kai gitlab r
  • 打开以http开头但不以www开头的链接

    我想打开以 www 开头的链接 但他们打不开 我的代码仅适用于http 请帮助 gt 我是 iOS 新手 我将非常感激 BOOL webView UIWebView webView shouldStartLoadWithRequest NS
  • DateTime.UtcNow 提前 4 小时

    我看到了一些关于如何纠正这个问题的答案 我有一个 DateTime 类型的对象 我已分配该对象 如下所示 obj TimeStamp DateTime UtcNow 我似乎无法找到正确的组合或代码操作来获得正确的日期和时间 它总是比当前时间
  • python:在交互模式下忽略前导“>>>”和“...”?

    许多在线 python 示例显示交互式 python 会话 每行前面都有正常的前导 gt gt gt 和 字符 通常 如果不获取这些前缀 就无法复制此代码 在这些情况下 如果我想在复制后将此代码重新粘贴到我自己的 python 解释器中 我
  • Android上的“覆盖”尺寸可以与谷歌地图一起缩放吗?

    我已经能够使用 MapActivity 和 ItemizedOverlay 通过 Eclipse 在 Android 上的谷歌地图上绘制叠加层 但是当地图放大和缩小时 叠加层的大小不会改变 我希望叠加层 固定 在地图上 并随地图一起放大和缩
  • GWT 错误:“gwt-module.dtd”中有“1”错误

    我正在学习 GWT 并尝试运行它沃盖拉的教程 https www vogella com tutorials GWT article html 在 Windows 10 和 JDK 11 上使用 Eclipse GWT 插件 3 0 我在第
  • 如何使用 hasNextInt() 捕获异常?我需要 Int 但如果输入是字符,那就不好了

    我一直在尝试阻止异常 但我不知道如何阻止 我试过parseInt java util NormalExceptionMismatch etc 有谁知道如何解决这个问题 由于复制和粘贴 格式有点不对 do System out print H
  • 快速检查 3D Touch 是否可行

    在我的应用程序中 我将显示设置 只有当设备支持 3D Touch 时 这些设置才应该可见 目前我检查设备是否有ios9 if available iOS 9 0 问题是 例如 iPhone 6 有 iOS 9 但没有 3D Touch 如何
  • 在64位linux上安装python 32位

    我基本上有两个问题 如何在 Linux 上安装 32 位 python 和 64 位 python 如何修复因以下失败尝试而损坏的系统 我只是尝试在 linux mint 16 上安装 32 位 python 和 64 位 python 它
  • Docker 上的 Airflow - 路径问题

    使用气流我尝试简单的 DAG 工作 我编写了自定义运算符和其他文件 我想将它们导入到 DAG 逻辑所在的主文件中 这里是文件夹的结构 airflow cfg dags init py dag py sql statements sql do
  • Young GC导致Metaspace增加,而不是Old Gen

    从 JDK7 迁移到 JDK 8 时 我开始看到频繁的 Full GC GC 延迟更高 分析gc后发现 young GC后 metaspace使用量增加 而old gen使用量保持不变 我已将最大元空间大小 等于 JDK7 中的 Perm
  • 属性内内联 JS 的 CSP 哈希或随机数

    内容安全策略的新手 所以不确定这是否可能 但想知道如何为 HTML 元素的属性中的某些内联脚本添加哈希或随机数 例如
  • 如何完全序列化/反序列化 RSAParameters 对象

    The RSAParameters对象不支持私钥数据的序列化 如何完整地序列化和反序列化私钥 以下代码可用于序列化和反序列化RSAParameters对象 使用您自己选择的序列化器 using System using System Run