C#中利用MD5实现密码加密实例
程序员文章站
2022-03-14 22:49:33
...
今天我们来分享一下关于MD5 加密的一些方法,分别是16位 32位 64位 加密
public class Program
{
static void Main(string[] args)
{
string a = "123456";
Console.WriteLine("32位加密1:");
Console.WriteLine(md5.MD5Encrypt(a, 32));
Console.WriteLine("16位加密1:");
Console.WriteLine(md5.MD5Encrypt(a, 16));
Console.WriteLine("====================================================");
Console.WriteLine("32位加密2:");
Console.WriteLine(md5.MD5Encrypt32(a));
Console.WriteLine("==========================-===============================");
Console.WriteLine("64位加密1:");
Console.WriteLine(md5.MD5Encrypt64(a));
}
}
上面只是调用,下面是实现的方法
public static class md5
{
/// <summary>
///取值16位 或 32 位
/// </summary>
/// <param name="password">待加密的字符串</param>
/// <param name="bit">位数,一般取值16 或 32</param>
/// <returns>返回的加密后的字符串</returns>
public static string MD5Encrypt(string password, int bit)
{
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
byte[] hashedDataBytes;
hashedDataBytes = md5Hasher.ComputeHash(Encoding.GetEncoding("gb2312").GetBytes(password));
StringBuilder tmp = new StringBuilder();
foreach (byte i in hashedDataBytes)
{
tmp.Append(i.ToString("x"));
}
if (bit == 16)
return tmp.ToString().Substring(8, 16);
else
if (bit == 32) return tmp.ToString();//默认情况
else return string.Empty;
}
/// <summary>
/// 32位MD5加密
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static string MD5Encrypt32(string password)
{
string cl = password;
string pwd = "";
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
//MD5 md5 = MD5.Create(); //实例化一个md5对像
// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得
for (int i = 0; i < s.Length; i++)
{
// 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符
pwd = pwd + s[i].ToString("x");
}
return pwd;
}
/// <summary>
/// 64位 加密
/// </summary>
/// <param name="password"></param>
/// <returns></returns>
public static string MD5Encrypt64(string password)
{
string cl = password;
MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); //实例化一个md5对像
// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择
byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));
return Convert.ToBase64String(s);
}
}
欢迎各位留言和评论,,
上一篇: 解读两个一致性哈希算法
推荐阅读