【发布时间】:2014-02-04 23:16:15
【问题描述】:
我有一个具有用户登录表单的winform 应用程序。我使用 3 个参数将我的用户登录信息存储在数据库中:用户名、哈希密码、盐:
salt = random string that will be stored in database for every user
hashed password = MD5(MD5(inputPassword) + MD5(salt))
我想在我的登录表单中有一个名为Remember me的复选框,当用户输入正确的信息并检查它时,下次用户打开程序时,他们的用户信息将自动输入,用户只需要点击login按钮。
我不能直接保存输入的密码,下次用它填写密码textBox,因为我知道有些软件可以像这样读取textBoxes,而且不安全。
问题:
如何在不保存用户密码的情况下做到这一点?
如果我需要保存一些信息,如何加密?
是否需要更改我的安全策略?
请注意,这是为客户端创建的客户端/服务器应用程序和登录表单。
【问题讨论】:
-
虽然很荣幸您尝试通过执行
MD5(MD5(inputPassword) + MD5(salt))来保护用户密码,但您应该改用proper password derivation function。使用 GPU 和密码方法,现代系统可以轻松地每秒尝试超过 1,000,000,000 个密码。使用适当大的ItterationCount来表示Rfc2898DeriveBytes,您可以轻松地将这个数字降低到每秒 100 个密码。
标签: c# winforms security hash salt