.net - 如何使用DPAPI加密SecureString以保存到磁盘,而无需先转换为不安全的字符串?

标签 .net securestring

我想使用DPAPI加密SecureString,以便可以将其保存到磁盘。

.net DPAPI类是ProtectedData类,但是ProtectedData.Protect具有单个重载,该重载采用字节数组。没有接受SecureString的重载。

Encrypting Passwords in a .NET app.config File中,John Galloway通过首先将SecureString转换为不安全的字符串来利用上述重载。我想避免这种情况,因为它首先破坏了使用SecureString的目的。

ConvertFrom-SecureString PowerShell cmdlet似乎可以满足我的需要,因为“如果未指定任何 key ,则使用Windows数据保护API(DPAPI)来加密标准字符串表示形式”,但我不确定如何直接使用此cmdlet .net或即使这样做也是个好主意。

最佳答案

Jeff Griffin的博客文章SecureString: Soup to Nuts, Part I展示了如何做到这一点。该方法是将SecureString转换为非托管BSTR,然后使用P/Invoke
调用非托管DPAPI函数。

关于.net - 如何使用DPAPI加密SecureString以保存到磁盘,而无需先转换为不安全的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13600773/

相关文章:

c# - 内存中烧录System.String

.net - 保存安全字符串

c# - 将字节数组转换为 SecureString

c# - LINQ聚合算法详解

c# - 为什么不能在嵌套的局部作用域中声明重复的变量名?

c# - wmi 无效查询错误

c++ - 将 Powershell SecureString 传递给 C++ 程序?

powershell - 在持久环境变量中保存安全字符串

.net - 冷启动时加载插件更快

C# 类方法。如何失败并返回为什么?