標籤:md5 c# 實現md5
md5的C#實現方法,自訂md5方法,完全跳過現今網路上的md5庫,實現md5加密的完全安全。
md5雖然很強大,但運用不好照樣可以被黑。簡單數字和字母的短字串md5的加密字元在現在的網路中一下就可以查詢到,也就是可以直接解密,md5庫裡直接就有了。所以md5的加密還是自己定義個規則,這樣更安全。
請看下面例子的“自訂MD5方法”中的“Md5EncodeMamicode”,簡單的實現思路,更安全的安全方法。
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Security.Cryptography;namespace M_Class{ /// <summary> /// [MD5加密][mamicode.com提供] /// </summary> public class MD5code { /// <summary> /// [建構函式] /// </summary> public MD5code() { } /// <summary> /// 預設加密方式 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string Md5Encode(string str) { return Md5Encode32(str); } /// <summary> /// 32位MD5演算法加密 /// </summary> /// <param name="str">需要加密的字串</param> /// <returns>加密後的字串</returns> public static string Md5Encode32(string str) { string password = ""; MD5 md5 = MD5.Create(); byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(str)); foreach (byte b in s) password += b.ToString("X2"); return password; } #region 自訂MD5方法 /// <summary> /// mamicode的MD5加密法 /// </summary> /// <param name="uid">使用者ID</param> /// <param name="MamicodePWD">需要加密的字串</param> /// <returns>加密後的字串</returns> public static string Md5EncodeMamicode(string uid, string MamicodePWD) { ///加密規則說明:分3步 ///第1步:對pwd進行一次md5加密 ///第2步:拼接新字串,使用者ID+pwd+第1步加密後字串取第5位開始的15位字元 ///第3步:將第2步拼接的字串再一次md5加密 string Secretkey1 = Md5Encode32(MamicodePWD); string Secretkey2 = uid + Secretkey1 + Secretkey1.Substring(5, 15); string Secretkey3 = Md5Encode32(Secretkey2); return Secretkey3; } #endregion }}
md5作為檢驗資料完整性的密碼編譯演算法最常用,c#實現MD5的方法