Windows中是否存在等效的OS X Keychain,用于存储用户密码?我会用它来保存我(桌面)软件使用的Web服务的用户密码.
从这个相关问题的答案(保护桌面应用程序中的用户密码(第2版))和可用的众多第三方密码存储工具,我认为这样的事情不存在 - 我是否坚持要求每次访问Web服务时,或者只是将其存储为模糊处理的密码?
"传统的"Windows等价物将是受保护的存储子系统,由IE(IE 7之前版本),Outlook Express和其他一些程序使用.我相信它是用您的登录密码加密的,这可以防止一些离线攻击,但是一旦您登录,任何想要读取它的程序.(例如,参见NirSoft的Protected Storage PassView.)
Windows还提供可能有用的CryptoAPI和Data Protection API.但是,我不认为Windows会阻止在同一帐户下运行的进程看到彼此的密码.
看起来像" 用户识别和身份验证机制 "一书提供了有关所有这些内容的更多详细信息.
Eclipse(通过其安全 存储功能)可以实现这样的功能,如果您有兴趣了解其他软件是如何实现的.
Windows 8有一个名为Password Vault的钥匙串的概念.Windows运行时应用程序(Modern/Metro)以及托管桌面应用程序可以使用它.根据文件:
应用和服务无权访问与其他应用或服务相关联的凭据.
请参阅如何在MSDN上存储用户凭据.
在Windows 8之前,数据保护API(DPAPI)是最接近钥匙串的等价物.虽然存储加密数据取决于开发人员,但可以使用此API对任意数据进行加密.数据最终使用当前用户的密码加密,但是可以包括用户或开发者提供的"可选熵"以进一步保护来自其他软件或用户的数据.数据也可以在域中的不同计算机上解密.
可以通过对Crypt32.dll的CryptProtectData和CryptUnprotectData函数的本机调用或通过.NET Framework的ProtectedData类来访问DPAPI ,后者是前一个函数的有限功能包装器.
Passcape的文章DPAPI Secrets提供了比您需要了解的有关DPAPI的更多信息.DPAPI中的安全性分析和数据恢复.
实际上,通过MSDN,他们推荐使用的功能(而不是受保护的存储)是:
CryptProtectData和CryptUnprotectData
CryptProtectData的链接位于:
http://msdn.microsoft.com/en-us/library/aa380261(v=VS.85).aspx
现在是2018年,Windows 10具有“凭据管理器”,可以在“控制面板”中找到