10

目前,我将我的用户名和密码存储在 SQL Server CE 数据库中。

我想使用一些 Windows API 来安全地存储我的用户密码,以便机器上运行的其他应用程序无法读取它们。

我支持 Windows 7,所以我不能使用Password Vault

根据此处提供的示例,我尝试使用CredWriteCredRead API 。

然而,虽然我成功地存储和恢复了我的密码,但我也成功地使用完全不同的应用程序恢复了它们。这意味着我拥有的唯一安全性是我正在使用的密钥。

还有其他可行的解决方案吗?

似乎任何使用Windows 安全帐户管理器的东西都不会做。

4

2 回答 2

8

使用数据保护 API (DPAPI)

数据受用户帐户凭据保护,因此可以由在同一帐户下运行的其他应用程序检索。或者,您可以使用机器凭据来授予对服务的访问权限。

有关示例,请参见示例 C 程序:使用 CryptProtectData

绝大多数应用程序都使用 DPAPI 来存储密码。

于 2015-08-16T10:45:44.607 回答
1

由于问题被标记为C#:有一个围绕DPAPI的.NET 托管包装器,这比使用互操作代码更容易。

可以在此处找到有关如何使用它的清晰示例。

如果ProtectedData在命名空间中找不到类型,请System.Security.Cryptography确保添加nuget package

Install-Package System.Security.Cryptography.ProtectedData

于 2021-06-09T07:45:30.523 回答