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 } }
时间: 2024-12-18 23:40:20