如何使用 .Net (C#) 在 Windows 中安全地存储 AES 密钥?

2024-06-26

我一直在寻找一种方法来存储给定的 AES 密钥,以便无法检索它,但它仍然可以用于加密和解密(使用 C#)。我认为可以找到非对称密钥存储的等效项here http://msdn.microsoft.com/en-us/library/tswxhw92%28VS.80%29.aspx,但我正在寻找可用于对称加密的东西。它是否以托管形式存在(.Net 4 之前的版本)?


Windows DPAPI(Win32 文档 http://msdn.microsoft.com/en-us/library/ms995355.aspx)及其 .NET 包装器(受保护数据类 http://msdn.microsoft.com/en-us/library/system.security.cryptography.protecteddata.aspx)不存储任何数据。相反,Windows DPAPI 返回一个加密密码值,您可以将其存储在您喜欢的任何地方,包括多个服务器上。

在我的工作场所,我们使用 DPAPI 为 AES 密钥生成密码,然后将其存储在注册表中。

Windows DPAPI 的唯一目的是加密数据,以便只有给定的用户帐户或计算机才能解密数据,而无需存储密码。

.NET ProtectedData 类自 2.0 起就已存在于 .NET Framework 中。

我会坚持使用 Windows DPAPI 而不是第三方产品,因为它成熟、稳定、免费、易于使用并且在 .NET 中得到完全支持。

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

如何使用 .Net (C#) 在 Windows 中安全地存储 AES 密钥? 的相关文章

  • 您使用什么工具和技术来查找死代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您使用哪些工具和技术来查找 NET 中的死代码 过去 我用 Obsolete 属性修饰方法 传递 tr
  • HTML 文档

    有没有一个工具可以从 VS2010 生成的 XML 文档文件生成 HTML 页面 我在谷歌上搜索了这样的工具 但没有找到 我下载并安装了SandCastle 但我不明白如何使用它 尝试使用Sandcastle 帮助文件生成器 http sh
  • gets 和 scanf 有什么区别?

    如果代码是 scanf s n message vs gets message 有什么区别 似乎两者都获取消息的输入 基本区别 参考您的特定场景 scanf 遇到一个时结束接受输入whitespace newline or EOF gets
  • 在 2 个 .c 文件之间共享函数

    dir1有dir2 file1 c和file1 h dir2 有 file2 c 现在 如果我想在 file2 c 中访问 file1 c 中定义的函数 我需要在 file1 h 中声明它并在 file2 c 中包含 file1 h 这是一
  • 在异步方法中使用时 HttpClient 标头被清空

    我正在使用 NET Framework 4 6 1 我的 Web api 中有一个控制器 其中有静态 HttpClient 来处理所有 http 请求 在 IIS 上托管我的应用程序后 大约每月一次 我的应用程序的所有传入请求都会出现以下异
  • 在宏中使用 # [重复]

    这个问题在这里已经有答案了 请解释一下代码 include
  • 外部剃刀视图看不到外部模型

    我对外部剃刀视图有疑问 在我的项目中 我有主 mvc Web 程序集和动态加载的外部类库程序集 来自 DB 及其自己的控制器 视图和模型 这些程序集在运行时不会直接引用和加载 我能够通过为控制器创建自定义控制器工厂 为视图创建自定义虚拟路径
  • MVVM 同步集合

    是否有一种标准化方法可以将 Model 对象集合与 C 和 WPF 中匹配的 ModelView 对象集合同步 我正在寻找某种类 可以使以下两个集合保持同步 假设我只有几个苹果 并且可以将它们全部保存在内存中 换句话说 我想确保如果我将 A
  • 持续运行的 C# 代码 - 服务还是单独的线程?

    我有一个 NET 4 Web 应用程序 它有 3 个关联的独立项目 DAL BAL 和 UI 我正在使用实体框架进行数据库交互 我有代码循环遍历一堆数据库数据 根据找到的内容调用方法 然后更新数据库 我希望这段代码一直运行 同时 我希望用户
  • 解析通过asp:FileUpload上传的XML文件

    我有一个场景 用户将上传 XML 文件 我想将该文件添加到数据库中的表中 不过 困难的部分是我需要解析文件 然后将一些信息添加到一些不同的表中 显示如何获取 XML 文件的每个示例都使用 URI 来获取文件 但是如何直接从数据库获取文件 或
  • 如何“全局”捕获对象实例中引发的异常

    我目前正在编写一个 winforms 应用程序 C 我正在使用企业库异常处理块 遵循我所看到的相当标准的方法 IE 在 Program cs 的 Main 方法中 我已将事件处理程序连接到 Application ThreadExcepti
  • argc 和 argv 在 Windows 中没有用吗?

    在 Linux 中 argc 和 argv 计算终端中的参数 但在 Windows 中 我找不到放置第二个参数的地方 事实上 每次我运行该程序时 它都会创建那个丑陋的黑色窗口 我什至没有机会给出任何争论 那么这两个变量在Windows平台下
  • Excel 2007 中的数值 - 底层 xml 文件中的表示与存储

    这个问题与 NET和OpenXml有关 我已经阅读了以下文章 它有很好的解释 但没有回答我的问题 Excel 2007 中数值的可视化与底层 xml 文件不一致 https stackoverflow com questions 58594
  • 剥离 OLE 标头信息 (MS Access / SQL Server)

    我有一个 C 应用程序需要支持二进制数据库内容 图像等 当使用 MS Access 或 MS SQL Server 时 此数据被包装在 OLE 对象内 如何去除此 OLE 标头信息 请注意 我不能只查找特定标签的开头 因为内容可以是 png
  • 如何在 Windows 8.1 上打开多个 Visual Studio 窗口? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我使用的是 Windows 7 我能够启动多个 Visual Studio 并同时工作 现在我有 Windows 8 1 操作系统 每当我
  • 如何进行平衡组捕获?

    假设我有这个文本输入 tes tR R abc aD mnoR xyz 我想提取 ff 输出 R abc R xyz D mnoR xyz R R abc aD mnoR xyz 目前 我只能使用平衡组方法提取组内的内容 如中所示msdn
  • 在 C# 中为 ListBox 分配数据源时,如何从 ListBox 中删除所选项目?

    在 C 中为 ListBox 分配数据源时 如何从 ListBox 中删除所选项目 尝试删除时出现错误 设置 DataSource 属性后 无法修改项目集合 但是当我尝试从数据源 数据表 中删除项目时 它会抛出错误 因为 数据行不在当前行集
  • 矩阵行列式算法 C++

    我是编程新手 我一直在寻找一种找到矩阵行列式的方法 我在网上找到了这段代码 但我很难理解这里的算法 我对递归的基础没有问题 但继续和主循环我很难理解 非常感谢任何可以向我解释该算法的人 int determ int a MAX MAX in
  • PC 上 XNA 中的信箱和缩放

    有没有一种方法可以让我基本上以 1080p 或 720p 作为默认分辨率来开发 XNA 游戏 然后根据设置的分辨率将游戏中的所有内容缩放到适当的大小 而不必在每个 Sprite 中设置缩放因子Draw 方法 我的想法是 我可以基于 1080
  • 有关 Endian 性和 .Net 的详细信息?

    我有几个关于字节顺序的问题 这些问题足够相关 我保证将它们作为一个问题提出 1 字节顺序是由 Net还是由硬件决定的 2 如果是由硬件决定的 我怎样才能在C 中找出硬件的字节序 3 字节序是否影响二进制交互 例如 OR AND OR 或移位

随机推荐

  • Android 上有某种 ASLR 保护吗?

    我想知道是否有人可以访问具有从程序的一个实例到另一个实例的函数地址相同的库 在同一设备上运行时 地址空间布局将非常一致 许多主要系统库都是由 zygote 预加载的 因此由它分叉出来的子级继承为共享映射 以区分为应用程序 我认为在虚拟内存级
  • 没有实例的 Django Formset

    In this http docs djangoproject com en dev topics forms modelforms inline formsetsDjango Doc 解释了如何创建一个表单集 该表单集允许您编辑属于特定作
  • JAX-RS:不区分大小写的路径

    我已将 REST 服务 方法锚定到 URI 模板 Path注解 它看起来像往常一样 GET Path message Produces application json public Response getMessage 但我的 REST
  • 如何从sqlalchemy中的select语句创建新表?

    我正在使用 sqlalchemy 的核心功能来编写一些抽象层 该层本身需要能够从 select 语句创建表 示例代码 metadata MetaData bind engine table Table table name metadata
  • 开发和生产 SQL Server 之间使用不同的排序规则会出现哪些问题?

    盘问 无法更新 sys columns 还有其他方法吗 https stackoverflow com questions 4018347 unable to update sys columns any other approach含糊地
  • >> 在 PHP 中是什么意思?

    考虑 echo 50 gt gt 4 Output 3 为什么输出3呢 50 的二进制是11 0010 右移 4 次11等于 3 See PHP 文档 http php net manual en language operators bi
  • 如何将参数传递给 JHipster 中的自定义错误消息?

    我仍在学习 JHipster 所以今天我想自己进行一些验证练习 并尝试向我的前端发送有意义的错误消息 这是我尝试过的 在我的控制器中 我有以下内容 POST lessons Create a new lesson of 45 min if
  • 如何在 firebug 中导致调试中断

    我试图在检测到错误时让萤火虫中断 具体来说 我在代码中进行了一些内部检查 例如断言 我希望 Firebug 在失败时停止 我尝试了几种不同的方法 并想知道其他人是怎么做的 以下是我尝试过的方法 输入一些无效代码 以便如果出现错误 函数断言
  • AFNetworking 的 UICollectionView 异步下载错误

    您好 我正在使用目录列表创建 Uicollection 视图 点击单元格时必须下载 PDF 它在一个视图中完美运行 但在另一个视图中出现错误 thread 1 tid 0x4b2ce 0x000000018d14f9b8 CoreFound
  • 为什么 NodeJS 不支持 String.prototype.replaceAll?

    这个字符串方法存在于 browserland 中 但不存在于 Node 中 为什么不 它既不是全新的 也不是异国情调的 replaceAll is part of ECMA 262 src https tc39 es ecma262 sec
  • 如何在响应式设计中禁用缩放功能?

    在使用 iPad iPhone 和 或其他智能手机时 如何禁用响应式设计页面中的放大和缩小功能 有什么办法可以控制吗 创建 META 视口标签 并设置用户可扩展属性为 否 如下所示 更新的答案
  • 运行 Fiddler 作为 HTTPS 服务器的反向代理

    我有以下情况 2台主机 一台是客户端 另一台是HTTPS服务器 Client
  • 确定文件是否打开

    有什么方法可以确定文件是否被任何包括不锁定文件的应用程序 如记事本 打开 我需要检测给定文件 myfile txt 何时不再在包括记事本在内的任何应用程序中打开 因此我无法使用具有独占访问权限的 File Open 进行测试 因为该文件没有
  • OpenAPI 查询参数描述未设置为文本框作为占位符

    我已经使用描述来添加查询参数的详细信息 例如 parameters name role in query required true schema type string description This is test descripti
  • PHP 和 ESB(使用 Mule)(ESB:企业服务总线)

    您在 PHP 项目中何时 何地以及为何使用 ESB 您认为在何处 何时以及为何在 PHP 项目中使用 ESB 有意义 ESB 以及像 Mule 这样的 ESB 促进者 是否提供了 PHP 和本地 LAMP 技术所缺乏的任何功能 Edit 我
  • Android AsyncTask 启动另一个 AsyncTask

    我目前正在 AsyncTask 的 onPostExecute 方法中执行类似的操作 其中NewTask is not当前正在执行的任务 private class OlderTask extends AsyncTask
  • 如何在 PHP 中识别请求的页面

    有没有简单的方法来识别最初处理请求的文件 忽略获取参数并处理 至少是基本的 映射 例如 to index php 理想情况下 我正在寻找类似的东西 SERVER REQUEST URI 但无论 get 参数如何 它都会返回相同的值 并且该值
  • 如何使用 selenium 和 junit 测试多个浏览器(版本)

    我刚刚发现了硒 一个很棒的工具 我计划运行 使用 selenium ide 生成的 junit4 代码 但我需要它与许多浏览器 网络驱动程序一起运行 这个用例有 junit java 模式吗 我的第一个想法是使用 RunWith Param
  • 特征/类类型参数优先于方法类型参数的规则是什么

    我已经使用 scala 一段时间了 我认为我真的开始理解一切 好吧 大多数事情 但我发现自己对 Map 类中的许多方法定义感到困惑 我知道 FoldLeft 等如何工作 但我感到困惑的是 Map 函数中使用的类型参数 我们以 FoldLef
  • 如何使用 .Net (C#) 在 Windows 中安全地存储 AES 密钥?

    我一直在寻找一种方法来存储给定的 AES 密钥 以便无法检索它 但它仍然可以用于加密和解密 使用 C 我认为可以找到非对称密钥存储的等效项here http msdn microsoft com en us library tswxhw92