首先,咱们来看一下原始的密码,这里咱们简单点,使用了123456做为测试用的密码,可是真实生活中,最好不要把密码设为123456.c#
string password = "123456";
OK,那么如今咱们来建立加密对象安全
MD5 md5 = MD5.Create();//建立MD5加密对象 SHA1 sha1 = SHA1.Create();//建立SHA1加密对象
而后咱们须要开始进行密码加密了测试
byte[] data = Encoding.Default.GetBytes("D" + password + "R");//以D和R作盐,进行加盐加密,这样就算你的原始密码泄露,加密后的密码也没法被破解 byte[] data_md5 = md5.ComputeHash(data);//先进行MD5加密 byte[] data_md5_sha1 = sha1.ComputeHash(data_md5);//再进行SHA1二次加密
这里咱们使用了D和R做为"盐",分别放在字符串前面和后面,这样能够保证实文密码被破解了仍是没法得到咱们加密后的密码,更加保证了安全性.ui
而后咱们须要使用StringBuilder得到咱们加密后的密码:加密
StringBuilder builder = new StringBuilder(); foreach (var item in data_md5_sha1) { builder.Append(item.ToString("x2"));//再把加密后的密码转换为16进制,防止暴力破解 } string password_with_encrypted = builder.ToString();//获得加密后的新密码
在这期间咱们还把每一个字符转换为了16进制,这是为了防止暴力破解.code
用完以后,咱们最好清空加密对象对象
md5.Clear(); sha1.Clear();
输出看结果:md5
Console.WriteLine("The password with encrypted is :" + password_with_encrypted); The password with encrypted is :fa5c941309545bdb150bcd78db45395a0403edc4