反射器时代的C#加密

Ste*_*eve 8 c# encryption reflector

我有一个程序,其中数据库的密码由远程用户设置.程序将用户名和密码保存到xml文件中的加密字符串中,否则应该是人类可读的.现在,这很好用,我使用C#DES加密密钥,并加密和解密.现在,问题是任何人都可以使用反射器来查看密钥.即使有混淆,关键也应该很明显.那么,如何解决这个问题呢?现在,我不需要这个NSA安全,但我真的想防止任何人偷看.谢谢.

编辑:感谢您到目前为止的所有建议,有关此类事情的信息并不十分普遍,我非常感谢一般提示以及具体答案.

Joe*_*Joe 8

尝试使用DPAPI(System.Security.ProtectedData类).这可以使用用户或计算机凭据保护您的加密数据.因此,只有访问数据的用户帐户(用户凭据)或可以登录计算机的用户(计算机凭据)才能解密您的数据.

  • 这对客户端代码尤其有用.在服务器端应用程序(模拟,服务帐户访问配置文件等)上使用DPAPI更加困难.在客户端上,用户在应用程序的第一次运行时指定其密码,该密码使用其DPAPI密钥加密.加密数据存储在他们的系统中,以便只有他们(或管理员)才能解密该数据.当用户再次启动应用程序时,DPAPI使用其密钥来解密密码.您可以获得不在通常可以轻松破解的程序集中存储通用加密密钥的好处. (2认同)

Bri*_*sen 5

对于兼职或不是这个问题,这不是一个真正的问题.这是关键的管理.DES和任何其他加密方案依赖于定期更改密钥.在代码中对密钥进行硬编码显然违反了这一点.要解决这个问题,您应该考虑密钥管理.

编辑:详细说明:根据您的设置,您可以将散列密码存储在文件系统中并依赖文件系统/用户安全性,或者依赖于数据库中的数据库权限.

  • 你可以更具体地说明如何处理这个问题吗? (4认同)