c# md5加密算法实例

1、获取MD5加密字符串

/// <summary>
/// 获得MD5加密字符串
/// </summary>
/// <param name="s">源字符串</param>
/// <returns>目标字符串</returns>
public static String MD5(String s)
{
    char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
    try
    {
        byte[] btInput = System.Text.Encoding.UTF8.GetBytes(s);
        // 获得MD5摘要算法的 MessageDigest 对象
        MD5 mdInst = System.Security.Cryptography.MD5.Create();
        // 使用指定的字节更新摘要
        mdInst.ComputeHash(btInput);
        // 获得密文
        byte[] md = mdInst.Hash;
        // 把密文转换成十六进制的字符串形式
        int j = md.Length;
        char[] str = new char[j * 2];
        int k = 0;
        for (int i = 0; i < j; i++)
        {
            byte byte0 = md[i];
            str[k++] = hexDigits[(int)(((byte)byte0) >> 4) & 0xf];
            str[k++] = hexDigits[byte0 & 0xf];
        }
        return new string(str);
    }
    catch
    {
        // Console.Error.WriteLine(e.StackTrace);
        return null;
    }
}

2、MD5 32位加密

/// <summary>
/// MD5 32位加密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static String md532(String s)
{
    MD5 md5 = new MD5CryptoServiceProvider();
    byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s);
    bytes = md5.ComputeHash(bytes);
    md5.Clear();

    string ret = "";
    for (int i = 0; i < bytes.Length; i++)
    {
        ret += Convert.ToString(bytes[i], 16).PadLeft(2, '0');
    }

    return ret.PadLeft(32, '0');
}
/// <summary>
/// ASP MD5加密算法
/// </summary>
/// <param name="md5str">要加密的字符串</param>
/// <param name="type">16还是32位加密</param>
/// <returns>Asp md5加密结果</returns>
public static string GetMd5(string md5str, int type)
{
    if (type == 16)
    {
        MD5 algorithm = MD5.Create();
        byte[] data = algorithm.ComputeHash(Encoding.UTF8.GetBytes(md5str));
        string sh1 = "";
        for (int i = 0; i < data.Length; i++)
        {
            sh1 += data[i].ToString("x2").ToUpperInvariant();
        }
        return sh1.Substring(8, 16).ToLower();
    }
    else if (type == 32)
    {
        MD5 algorithm = MD5.Create();
        byte[] data = algorithm.ComputeHash(Encoding.UTF8.GetBytes(md5str));
        string sh1 = "";
        for (int i = 0; i < data.Length; i++)
        {
            sh1 += data[i].ToString("x2").ToUpperInvariant();
        }
        return sh1.ToLower();
    }
    return "";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YuanlongWang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值