C#字符串MD5加密GetMD5Hash

//杨中科老师

/// <summary>
        /// 把字符转换成MD5
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static string GetMD5Hash(String str)
        {
                   //把字符串转换成字节数组
                   byte[] buffer = Encoding.Default.GetBytes(str);

                  MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                   //md5加密
                   byte[] cryptBuffer = md5.ComputeHash(buffer);
                   string s = "";
                   //把每一个字节 0-255,转换成两位16进制数     
                   for (int i = 0; i < cryptBuffer.Length; i++)
                   {
                           //大X转黄的是大写字母,小X转换的是小写字母
                           s += cryptBuffer[i].ToString("x2");
                   }
              return s;
        } 

赵小虎老师

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;

namespace _02调用类库实现MD5值的计算
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 计算字符串的MD5值
            //while (true)
            //{
            //    Console.WriteLine("请输入一个字符串");
            //    string msg = Console.ReadLine();
            //    string md5String = GetMD5FromString(msg);
            //    Console.WriteLine(md5String);
            //}
            #endregion

            #region 计算文件的Md5
            string path = @"d:\spring.xls";
            Console.WriteLine(GetMD5FromFile(path));
            Console.ReadLine();
            #endregion
        }

        /// <summary>
        /// 计算字符串的MD5值
        /// </summary>
        /// <param name="msg">要计算的字符串</param>
        /// <returns></returns>
        private static string GetMD5FromString(string msg)
        {
            
            //1.创建一个用来计算MD5值的类的对象
            using (MD5 md5 = MD5.Create())
            {

                //把字符串转换为byte[]
                //注意:如果字符串中包含汉字,则这里会把汉字使用utf-8编码转换为byte[],当其他地方
                //计算MD5值的时候,如果对汉字使用了不同的编码,则同样的汉字生成的byte[]是不一样的,所以计算出的MD5值也就不一样了。
                byte[] msgBuffer = Encoding.Default.GetBytes(msg);

                //2.计算给定字符串的MD5值
                //返回值就是就算后的MD5值,如何把一个长度为16的byte[]数组转换为一个长度为32的字符串:就是把每个byte转成16进制同时保留2位即可。
                byte[] md5Buffer = md5.ComputeHash(msgBuffer);
                md5.Clear();//释放资源

                StringBuilder sbMd5 = new StringBuilder();
                for (int i = 0; i < md5Buffer.Length; i++)
                {
                    sbMd5.Append(md5Buffer[i].ToString("x2"));
                }
                return sbMd5.ToString();

            }

        }


        private static string GetMD5FromFile(string path)
        {
            using (MD5 md5 = MD5.Create())
            {
                
                using (FileStream fsRead = File.OpenRead(path))
                {
                    byte[] bytes = md5.ComputeHash(fsRead);
                    md5.Clear();
                    StringBuilder sbMd5 = new StringBuilder();
                    for (int i = 0; i < bytes.Length; i++)
                    {
                        sbMd5.Append(bytes[i].ToString("X2"));
                    }
                    return sbMd5.ToString();
                }

            }
        }
    }
}


本人转自:http://www.nbcoder.net/thread-271-1-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值