我正在编写.Net WinForms应用程序,我需要保存密码才能访问远程服务。我有一个XML文件,我写了所有设置。但是,我不想将纯文本密码写入XML配置文件。我想过使用AesCryptoServiceProvider来加密信息。这个类需要一个密钥来加密数据,我想我可以把它留在我的程序的源代码中。然而,在我看来,这只比将其存储在纯文本中要好一些,因为对于我的程序的所有实例,密钥总是相同的。我可以在第一次启动程序时生成一个密钥,但是,那么,哪里可以存储它的好地方?有人认为我使用的是常量密钥,以及与密码一起存储的盐。这将为每个人机器制作一个独特的“钥匙”,而不必将钥匙存放在空旷的地方。是否有标准的方法将这类信息存储在用户的硬盘上?
答案 0 :(得分:2)
我想不出一个完美的解决方案,但你可以使用DPAPI ......
这通常会阻止另一个系统上的文件解密,但不会最终保护数据,因为用户可以从您的程序中提取额外的关键字节,并且因为他可以访问不会的机器/用户密钥是一个问题......
如果你的问题更像是“在哪里存储一个无法避免的最终加密密钥?” ...我建议具有严格访问权限的每个用户的注册表路径
答案 1 :(得分:0)
我只能想到两个选项
请记住,如果您担心人们进入您的应用程序以提取密钥之类的东西,那么他们就可以轻松打印您发送之前需要发送的原始密码。如果你担心那么你需要考虑其他选择