C# MD5算法 16 32 大小写

摘要:
格式后面的字符是小写字符。如果使用大写,则格式后的字符为大写字符{pwd=pwd+s[i].ToString.ToLower();}}//如果{pwd=pwd.Substring;},则为16位returnpwd;}//////计算文件的MD5值//////需要计算MD5值的文件的路径//是否需要返回16位,默认值为32位//˂paramname=,默认值为小写//publicstaticstringGetMD5Value_File{stringpwd=“”;MD5md5=MD5.Create();//使用{byte[]s=MD5.ComputeHash;File.Close()实例化MD5对象;//如果{//--X是十六进制,则每次pwd=pwd+s[i].ToString时2为两位数字;//为获得的字符串使用十六进制类型格式。

MD5算法

/**
*┌──────────────────────────────────────────────────────────────┐
*│ 描    述:日志相关的工具类                                                   
*│ 作    者:执笔小白                                              
*│ 版    本:1.0                                       
*│ 创建时间:2020-6-13 15:40:56                            
*└──────────────────────────────────────────────────────────────┘
*┌──────────────────────────────────────────────────────────────┐
*│ 命名空间: WMSTOMESTT                               
*│ 类    名:ETools                                     
*└──────────────────────────────────────────────────────────────┘
*/
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace ZhibiXiaobai.Uril.EDEHelper
{
    public class Md5Helper
    {
        /// <summary>
        /// 计算字符串的MD5
        /// </summary>
        /// <param name="str">需要计算的字符串</param>
        /// <param name="md5_16">需不需要返回16位,默认32位</param>
        /// <param name="capital">需不需要返回大写,默认小写</param>
        /// <returns></returns>
        public static string GetMD5Value_String(string str = "", bool md5_16 = false, bool capital = false)
        {
            string pwd = "";
            MD5 md5 = MD5.Create();  //实例化一个md5对象
            byte[] s = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(str));

            // 大写
            if (capital)
            {
                for (int i = 0; i < s.Length; i++)
                {
                    // --X为十六进制,2为每次都是两位数
                    pwd = pwd + s[i].ToString("X2");  // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母
                }
            }
            else
            {
                for (int i = 0; i < s.Length; i++)  // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
                {
                    pwd = pwd + s[i].ToString("X2").ToLower();
                }
            }

            // 16位
            if (md5_16)
            {
                pwd = pwd.Substring(4, 16);
            }
            return pwd;
        }

        /// <summary>
        /// 计算文件的MD5值
        /// </summary>
        /// <param name="fileName">需要计算md5值的文件的路径</param>
        /// <param name="md5_16">需不需要返回16位,默认32位</param>
        /// <param name="capital">需不需要返回大写,默认小写</param>
        /// <returns></returns>
        public static string GetMD5Value_File(string fileName = "", bool md5_16 = false, bool capital = false)
        {
            string pwd = "";
            MD5 md5 = MD5.Create();  //实例化一个md5对象
            using (FileStream file = new FileStream(fileName, System.IO.FileMode.Open))
            {
                byte[] s = md5.ComputeHash(file);
                file.Close();

                // 大写
                if (capital)
                {
                    for (int i = 0; i < s.Length; i++)
                    {
                        // --X为十六进制,2为每次都是两位数
                        pwd = pwd + s[i].ToString("X2");  // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母
                    }
                }
                else
                {
                    for (int i = 0; i < s.Length; i++)  // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
                    {
                        pwd = pwd + s[i].ToString("X2").ToLower();
                    }
                }

                // 16位
                if (md5_16)
                {
                    pwd = pwd.Substring(4, 16);
                }
            }
            return pwd;
        }
    }
}

补充-记一次错误:

    第一次算法中用的是‘s[i].ToString("X")’出错,找了下是因为少了1位,03只输出了3,改为s[i].ToString("X2")变成正常。

1.str.ToString("X2")解释:

    X为十六进制,

    2为每次都是两位数

免责声明:文章转载自《C# MD5算法 16 32 大小写》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇几种实现延时任务的方式解决 Tomcat 下载文件名中包含中文的文件失败的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

2020第44周Windows文件系统不区分大小写

由于Windows文件系统不区分大小写,所以你不能通过大小写来区分文件名或文件夹名,比如你在资源管理器中新建一个A.txt文件,想再建个a.txt时会提示你重名并自动重命名。这在Git操作时可能会遇到问题,比如你代码库里文件或文件夹修改了名称,默认Git认为是没变的,如果单纯让Git在仓库中区分大小写会产生两份文件并且无法在Windows系统中观察到),...

hive SQL 字母大小写转换

lower(string A) lcase(string A) 将文本字符串转换成字母全部小写形式 upper(string A) ucase(string A) 将文本字符串转换成字母全部大写形式 常用字符串相关函数,可以参考: https://www.iteye.com/blog/blackproof-2108353...

利用MSSQL排序规则,查询区分大小写的数据 枫

1、查询MSSQL所有排序规则: SELECT * FROM fn_helpcollations() 2、排序规则含义说明: BIN 二进制排序CI(CS) 是否区分大小写,CI不区分,CS区分AI(AS) 是否区分重音,AI不区分,AS区分   KI(KS) 是否区分假名类型,KI不区分,KS区分 WI(WS) 是否区分宽度 WI不区分,WS区分  3...

C#MD5算法

1.来历 MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来, 经md2、md3和md4发展而来。http://www.ietf.org/rfc/rfc1...

Windows Installer (MSI) 详解 参数介绍

1       Windows Installer 概述 Windows Installer 是 Windows 操作系统的组件,它可以简化应用程序的安装过程。 通过应用安装过程期间集中定义的一组安装规则,Windows Installer 可以管理应用程序的安装和删除。还可以使用此项服务修改、修复或删除现有的应用程序。Windows Installer技...

MD5算法

转自MD5算法 MD5是输入不定长度信息,输出固定长度128-bits的算法。经过程序流程,生成四个32位数据,最后联合起来成为一个128-bits散列。基本方式为,求余、取余、调整长度、与链接变量进行循环运算,得出结果。 MD5的具体实现好像有所区别,起码维基百科和百度百科的就不一样。但经过验证都是正确的,而这里采用的是维基百科的方法(http://zh...