如何使用 CNG 处理明文密钥?

2023-12-14

我有一组预定义的明文密钥,用于对称加密/解密。这些密钥用于与连接到 PC 的硬件设备进行加密通信。 我想使用 CNG 密钥存储提供商来安全地存储这些密钥。加密和解密必须在 CNG 之外完成。我只需要一个安全的地方来存储和检索我的预定义明文密钥。 最近几天,我研究了 CNG 函数参考,但找不到任何方法将由名称标识的明文对称密钥导入/导出到 CNG 密钥容器中。

我知道 CryptoAPI 提供了导入/导出会话密钥的功能。但这个旧的 API 不提供持久(会话)密钥,也无法在密钥容器中按名称选择/识别密钥。

非常感谢任何帮助。提前致谢。


恐怕您无法获得直接的解决方案,因为 CNG 密钥存储提供商目前支持非对称密钥,但不支持对称密钥。只有原始提供者支持对称密钥。

该模型面向的是必须长期保护的非对称密钥,而对称密钥仅用于一个会话,然后就被丢弃。这些对称密钥可能源自非对称密钥,例如 Diffie-Hellman 或 ECDH。

您说您希望安全地存储密钥,但加密/解密是在 CNG 外部完成的。根据您要防御的威胁,这可能不是正确的方法。通常,如果您将密钥存储在密钥存储提供程序中,您希望在密钥存储提供程序内部完成加密操作,并且不希望密钥离开它(除非由另一个密钥加密),因为这会将密钥材料暴露给攻击者。

但是,如果您确定这就是您想要的,一种选择是在密钥存储提供程序中生成 RSA 密钥,并使用它来加密和解密对称密钥。您可以将加密的对称密钥 blob 存储在其他地方,例如在文件系统中。

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

如何使用 CNG 处理明文密钥? 的相关文章

  • Windows:使用 CMD(或 Java)从非特权运行特权命令

    我将有一个以管理员身份运行并侦听端口的服务 我的 GUI 程序将与管理员服务对话以获取需要管理员权限的项目 如果该服务尚未运行 我需要启动它 如何让我的 GUI 程序以管理员身份运行命令 我假设用户会被询问是否要继续 我希望我可以在 CMD
  • Qt GUI 应用程序中的控制台输出?

    我有一个在 Windows 上运行的 Qt GUI 应用程序 它允许传递命令行选项 在某些情况下我想向控制台输出一条消息 然后退出 例如 int main int argc char argv QApplication a argc arg
  • MySQL 中 INDEX、PRIMARY、UNIQUE、FULLTEXT 之间的区别?

    创建MySQL表时PRIMARY UNIQUE INDEX和FULLTEXT有什么区别 我将如何使用它们 差异 KEY or INDEX指的是普通的非唯一索引 索引的非不同值是允许的 因此索引may索引的所有列中包含具有相同值的行 这些索引
  • Notepad++ - 使函数“可点击”?

    我只是想这可能有用 但我找不到办法 在 Notepad 中 有没有一种方法可以使函数名称 可单击 即使它们成为链接 这样如果您单击它们 它会自动将您带到其定义 最好是跨整个代码库 目前还没有插件提供可直接单击的函数名称 但您可以尝试使用 S
  • 当用户尝试打开新实例时返回到已打开的应用程序

    这是我有一段时间想不通的问题 防止第二个实例很简单并且有很多方法 但是恢复已经运行的进程则不然 我想 最小化 撤消最小化并将正在运行的实例置于最前面 在其他窗口后面 将应用程序置于最前面 我使用的语言是 VB NET 和 C 我发现这段代码
  • 如何在python中使用RSA私钥加密数据?

    我已经安装了pyCrypto http pythonhosted org pycrypto 在 Python 2 7 1 上打包来执行一些加密操作 Q1 我想做的操作是加密一些数据private Key 代替public Key 这个图书馆
  • 使用 Windows 网络共享目录时 Hg 存储库损坏

    我希望我能在这里得到一些帮助 因为 SO UX 比 Mercurial 邮件列表更好 多年来我一直在家里愉快地使用 Mercurial 我还将它与 Bitbucket Cloud 一起用于一些更严肃 但仍然是爱好 的项目 去年 我将我的团队
  • Vagrant 错误:无法挂载 VirtualBox 共享文件夹(Guest Additions、vboxsf)

    问题 我在 Windows 10 上安装了 Vagrant 这样我就可以在虚拟机中创建个人本地开发环境 我读到的有关 Vagrant 的所有内容都表明我什至可以启动多个系统并通过 NAT 端口转发测试它们之间的通信 但首先 我只想在对其余部
  • 查找所有 DHCP 和 DNS 服务器

    我有一位客户要求我找到他所有的 Dhcp 和 DNS 服务器以及一些附加信息 例如 DC 服务器和操作系统 所以我决定尝试提高我的 powershell 技能 但我对此还很陌生 所以我写了这个脚本 但我想仍然缺少一些东西 因为它不起作用 编
  • Java - 使用 JNA 的 Windows 任务栏 - 如何将窗口图标 (HICON) 转换为 java 图像?

    我正在尝试将应用程序切换器添加到我正在处理的更大项目中 它需要在 Windows XP Vista 7 8 上运行 我正在使用 Java 1 7 下面是我创建的一个示例应用程序 用于演示我遇到的一些问题 我对 JNA 很陌生 非常感谢 充满
  • 用于新 Windows 游戏项目的 OpenGL 或 Direct3D?或者是其他东西?

    我正在 Windows 上启动一个爱好游戏项目 该项目将大量使用 3D 图形效果 它很可能是用 C 编写的 我应该使用 OpenGL 还是 Direct3D 作为我的图形后端 为什么 或者我应该使用现成的图形引擎 例如OGRE 3D htt
  • 数据未保存为加密数据 django

    到目前为止 我尝试了超过 6 个插件 但现在很沮丧 现在用的是这个密码学 https pypi org project django cryptography 一切都很好并相应地完成 但是当我像这样在模型管理器中保存数据时 def crea
  • 如何在 Windows 中创建上下文菜单子菜单?

    我一直在编写实用程序并通过 Shell 键 上的 Regedit 将它们映射到上下文菜单 但我不知道如何像一些更流行的实用程序那样创建子菜单 例如 如果我有三个脚本将文件移动和重命名到三个不同的文件夹 那么现在我有三个不同的上下文菜单条目
  • Ruby openssl 文档 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有 Ruby 的在线文档openssl图书馆 我能找到的只是博客文章和第三方文章 而 rdoc 本
  • 在 Windows 下克隆 git repo 时,出现“错误:无法创建文件 <文件>...(是目录)”

    Z gt git clone git github com kennethreitz httpbin git Cloning into httpbin remote Counting objects 1073 done remote Com
  • 为什么某些安装程序需要在运行程序之前重新启动计算机?

    我对部署桌面应用程序相当陌生 所以这是我第一次为我的软件构建安装程序 目前 我安装软件后第一次运行它时 它崩溃了 之后 它运行良好 我仍在调试此问题 但我注意到在安装后和运行软件之前立即重新启动似乎可以修复此崩溃 某些安装程序要求您在运行软
  • 调整屏幕和字体设置的 WPF 应用程序(或者,我如何将 DLU 与 WPF 中的单元相关联?)

    在MFC中 对话框的设计使用DLUs http msdn microsoft com en us library bb847924 aspx 在 WPF 中 我们以 1 96 英寸为单位指定 虽然这确实会缩放窗口和视觉元素 但我们如何使 W
  • 启用 TLSv1.2 和 TLS_RSA_WITH_AES_256_CBC_SHA256 密码套件

    Server TLS Version v1 2 Cipher Suite TLS RSA WITH AES 256 CBC SHA256 Client JRE 1 7 当我尝试直接通过 SSL 从客户端连接到服务器时 收到以下错误 Caus
  • clojure 有 AES 库吗?

    clojure 有 AES 加密库吗 我应该使用通过 maven 或 clojars 提供的 java 库吗 感谢您的时间和考虑 下面是一个使用可用的 java 加密库的可能更惯用的示例 encrypt and decrypt这里每个都简单
  • 推送更改到 Git 不起作用

    每次我想要提交命令 git push heroku master 时 系统都会要求我在 PowerShell 中输入凭据 当我输入 heroku 凭据 默认情况下连接到 git 时 我收到错误消息 但是 当我输入我的主目录中的 netrc

随机推荐

  • 使用 ncdf4::ncvar_get 时如何指定维度顺序?

    继上一个问题之后 从 netCDF 更快地读取时间序列 我重新排列了我的 netCDF 文件以提供快速的时间序列读取 github上的脚本最终会被清理 简而言之 为了使阅读速度更快 我重新排列了尺寸lat lon time to time
  • jquery remove 从另一个元素中删除

    根据here jquery删除函数应该像这样工作 div remove selector 我正在尝试在这个例子中 HTML div class wrapper p class unwanted This should be removed
  • 从一个表中选择并插入到另外两个表中

    我是 SQL 初学者 对 Transact SQL 不太了解 我意识到这是一个新手问题 但我正在寻找一个简单的解决方案 我有一个包含一些列的表 locationCode CustomerCode 主表 ItemCode locationCo
  • 如何使用来自服务或广播接收器的意图?

    我需要能够在我的活动关闭时处理 捕获意图 所以我正在寻找服务或广播接收器 是否有可能 接收 服务本身的意图 我尝试搜索 但找不到任何有用的东西 对于 BroadcastReceiver 我不太确定它在 Activity 之外是如何工作的 这
  • iOS 6/7 中“没有重用表格单元格的索引路径”消息的含义是什么?

    自从开始使用 iOS 6 以及 iOS 7 编译我的应用程序以来 我开始看到此消息 我知道 UITableViews 管理单元格的方式在 iOS 6 中是不同的 但我不需要修改我的代码来让它继续工作 但我担心此消息可能会指出一些我尚未看到的
  • 如何更改 Lollipop 中的 DatePicker 日历视图背景颜色?

    我花了很多功夫来改变 Lollipop 的 DatePicker 的默认背景颜色 我不能简单地使用 Styleable attrs 来更改默认样式 正如另一篇文章中提到的post 我只能使用反射来找到视图 然后对其进行更改 e g if a
  • 访问另一个文件中的类属性

    我是蟒蛇新手 我有一个关于访问类中属性的问题 t1 py usr bin python import t2 class A flag False if name main t2 f print A flag t2 py usr bin py
  • 如何cat <>包含代码的文件?

    我想使用将代码打印到文件中cat lt
  • Angular 5 - 可观察的返回错误无法读取未定义的属性

    当我使用以下命令调用我的 Web 服务时 我开始在我的 Angular 服务中使用 Spring Rest 和 Angular 5 实现一个简单的分页http客户端获得所请求页面的正确响应 它在我的页面上正确显示数据 但控制台 Web 浏览
  • 按行随机连接数据帧

    如何按行随机合并 连接或连接 pandas 数据帧 假设我有四个像这样的数据框 有更多行 df1 pd DataFrame col1 1 1 1 1 col2 1 2 1 2 col3 1 3 1 3 df2 pd DataFrame co
  • Node.js 中子进程之间的通信

    我正在尝试在 node js 中创建一个程序 使用以下命令创建两个进程fork 的方法childproccess 流程如下 父亲 js Son1 js Son2 js 我想直接在两个子进程之间传输数据 而不是在父进程和子进程之间传输数据 我
  • 使用 abcpdf 将 html 文件下载为 pdf

    如何在 ASP Net C 中使用 abcpdf 将 HTML 文件下载为 PDF 以下 C ASP NET 示例展示了如何从网页创建 PDF 并将其流式传输到 Web 浏览器
  • Tkinter:正确使用 root.after()

    我想创建一个每秒沿 y 轴移动 10 像素的射弹 使用 after 函数 我所做的第一次尝试是这样的 def muovi self root i 0 while i lt 10 i 1 self parent move self colpo
  • 将捆绑包从一个意图转发到另一个意图

    有没有一种方法可以将意图包从一个意图传递到另一个意图 而无需提取该意图包并单独处理每个额外的内容 Example intent2 setExtras intent2 getExtras 有专门的功能 Intent putExtras 捆绑额
  • Python求最大成对乘积

    n int input Enter the number of elements in the array 2 200 000 a int x for x in input Enter all numbers of the sequence
  • 如何让点击事件通过 tkinter 窗口?

    我一直在尝试使用 tkinter 来制作叠加层 以便一些信息会出现在屏幕其余部分的顶部 我不想让这个窗口挡住鼠标 有什么办法可以让点击事件通过我的叠加层吗 所以我的 tkinter 应用程序下面的窗口接收到该事件 不 tkinter 中没有
  • 排除在 Visual Studio 中发布的网站中的文件

    在 Visual Studio 2005 中发布网站时可以排除文件夹或文件吗 我想在解决方案资源管理器中保留各种资源 例如各种环境的备用配置文件 但我真的不想将它们发布到服务器 有什么办法可以排除它们吗 使用其他项目类型 例如 dll 程序
  • 服务器作为移动应用程序用例图中的参与者

    我开发了一个与服务器通信的 Android 应用程序 通过该应用程序 用户在服务器正在运行的系统上进行身份验证 并且服务器能够将信息发送到我的应用程序 我正在为我的应用程序制作用例图 UML 但我不确定是否应该将服务器表示为参与者 外部 或
  • 将 C# 数组传递给 Javascript

    将 C 数组传递给 javascript 变量的最佳方法是什么 我有示例代码 但是这个从 C 数组中逐个字符返回 我想以正常方式返回 就像 javascript 数组中逐字返回一样 背后的C 代码 public string names J
  • 如何使用 CNG 处理明文密钥?

    我有一组预定义的明文密钥 用于对称加密 解密 这些密钥用于与连接到 PC 的硬件设备进行加密通信 我想使用 CNG 密钥存储提供商来安全地存储这些密钥 加密和解密必须在 CNG 之外完成 我只需要一个安全的地方来存储和检索我的预定义明文密钥