我在考虑制作一个小工具.这个工具会做什么并不重要.重要的是,该工具需要在用户的硬盘上存储一些敏感信息.编辑:将存储的信息是用户信息 - 我不是要保护我自己的内容,而是通过应用程序分发.
我知道我需要加密这些信息.但是,我在哪里可以安全地存储加密密码?这是某种无限递归......
那么,有没有办法加密Windows上的信息,并让Windows安全地管理密码?当我说Windows时,我指的是Windows XP SP2或更高版本.
我还应该注意,同一系统上的用户必须无法访问其他用户信息(即使他们都在运行我的应用程序).
我正在寻找这个问题的.NET 2.0(C#)和本机(C/C++)解决方案.
有没有办法,加密Windows上的信息,并安全地管理Windows密码?
CryptProtectData:http://msdn.microsoft.com/en-us/library/windows/desktop/aa380261( v=vs.85) .aspx
从.NET使用:http://msdn.microsoft.com/en-us/library/aa302402.aspx
历史上,受保护的存储(在XP中可用,在vista中只读):http://msdn.microsoft.com/en-us/library/bb432403%28VS.85%29.aspx
您应该考虑将DPAPI用于此目的.它将使用基于每个用户的特殊(内部)对称密钥对您的数据进行加密.在这种情况下,您甚至不需要请求密码,因为系统上的不同用户将分配不同的密钥.
它的缺点可能是,如果删除用户/重新安装Windows,则无法恢复数据(我相信情况确实如此,但不太确定).在这种情况下,使用从密码派生的"自生成"密钥加密数据,并将密码存储在使用DPAPI加密的注册表/文件中.