您现在的位置是:首页 > 文章详情文章详情

C# 标准的MD5加密32位

会飞的猪 2019-08-19 74人已围观

简介白码驿站是一个面向开发者的知识共享社区,专注于为开发者打造一个纯净的技术交流社区(源码下载,免费在线图片压缩,jquery插件,插件下载,JS/CSS在线压缩。)-白码驿站

        MD5加密后得到的是byte类型的数组,如果想要转换为32位的字符串,需要将每个数组成员转换成16进制的string字符串,这里就很容易产生BUG,因为转换成16进制时,遇到10以内的数字时,转后都是一个单字符的,但我们每次转换都要得到两个字符的字符串,所以我们这里需要做一下处理才可以, 否则会导致MD5加密结果会有问题

代码:

                                        
/// <summary>
/// 获取32位MD5加密值
/// </summary>
/// <param name="srcstr">需要加密的值</param>
/// <returns></returns>
public static string GetTo32MD5(string srcStr)
{
    MD5 md5 = new MD5CryptoServiceProvider();
    byte[] fromData = System.Text.Encoding.UTF8.GetBytes(srcStr);
    byte[] md5Byte = md5.ComputeHash(fromData);
    string str = null;

    for (int i = 0; i < md5Byte.Length; i++)
    {
        /*
         *  这个是很常见的错误,你字节转换成字符串的时候要保证是2位宽度啊,
         *  某个字节为0转换成字符串的时候必须是00的,否则就会丢失位数啊。
         *  不仅是0,1~9也一样。
         */
        //byte2String += targetData[i].ToString("x");//这个会丢失
        str = str + md5Byte[i].ToString("x2");
    }
    return str;
}
                                


Tags: C# 、 字符串加密

很赞哦! (0)

系统处理中...