首先,咱們來看一下原始的密碼,這裏咱們簡單點,使用了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