我有一个用纯文本填充的数据库列。管理人员认为将密码作为纯文本存储在数据库中风险太大。所以问题是,我需要将给定列中的所有值传递给加密文本,当然还要修改C#中的业务逻辑。从程序上的知识应该读取数据库中的加密值,解密数据并使用它,当然如果新用户注册我需要将ecrypted值存储在数据库中。 (但这不是问题。) 那么有没有一种正确而安全的方法来加密整个列(它已经被用作纯文本)而不会破坏软件的行为?
答案 0 :(得分:0)
1)创建新列,如hash_pwd
;
2)用哈希等效的当前密码填写;
3)更改软件以使用哈希,而不是普通密码;
4)使用普通密码删除或清除旧列。
PS:最好不要存储密码的简单哈希(MD5 / SHA),而是添加像HASH( plain_password + "my_string" )
这样的静态字符串。这将保护数据库免受哈希字典攻击 - 例如如果我知道HASH( "123456" )
的结果,并且可以使用密码123456
找到所有用户。