2012-08-09

使用PBKDF2算法保护密码


1、  加密:
MD5
使用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: