1、 加密:
使用PBKDF2算法保护密码
//密码文字
string password = "Mgen!";
//随机填充密码salt
byte[]
salt = new byte[20];
var rng = RandomNumberGenerator.Create();
rng.GetBytes(salt);
//默认以UTF8(无BOM)得到字节。把salt保存到数据库
var kd = new Rfc2898DeriveBytes(password,
salt);
//输出密钥1
Console.WriteLine(BitConverter.ToString(kd.GetBytes(10)));
//更换salt
rng.GetBytes(kd.Salt);
//输出密钥2
Console.WriteLine(BitConverter.ToString(kd.GetBytes(10)));
把salt保存到数据库
Per
user per salt => 相同密码加密后不同
登陆时取出用户的加密密码和盐,使用用户输入的密码和盐加密,和数据库中取出的密码比较
更改密码是不修改盐
No comments:
Post a Comment