如何在计算机上以无法访问的方式保存密码是最佳方法?我希望将它们加密后存储在注册表中。我希望您能够重置密码,但这不是针对服务器的。这是为了将它们存储在计算机上以记住它们并自动登录。
重要编辑:我需要能够从程序内部检索明文密码,但不能在其他地方检索。
如何在计算机上以无法访问的方式保存密码是最佳方法?我希望将它们加密后存储在注册表中。我希望您能够重置密码,但这不是针对服务器的。这是为了将它们存储在计算机上以记住它们并自动登录。
重要编辑:我需要能够从程序内部检索明文密码,但不能在其他地方检索。
CryptProtectData和CryptUnprotectData是Windows上最好的选择。它们使用登录凭据加密数据,因此密码免受磁盘攻击。但是,任何在相同用户下运行的程序都可以访问它们。我建议将它们存储在一个文件中,该文件的权限可以防止其他程序访问它们(例如需要管理员权限才能访问的文件)。
托管类ProtectedData使用这些函数,因此可以从C#中使用。
您还可以使用P/Invoke直接使用这些函数。这里有一些示例代码可以做到这一点here。
针对额外要求的拓展:
有一种方法可以确保您的程序是唯一能够访问密码而不需要以管理员权限启动程序的方式,尽管这需要更多的工作。我相信我正在寻找的是AES. 这似乎是一种简单的方法来存储密码。当然,这只是为了在计算机上记住密码,以便用户不必键入密码。
CurrentUser
保护范围的ProtectedData
最接近。自己构建AES可能不是一个好主意。 - CodesInChaos