我想使用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/