博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MD5
阅读量:5010 次
发布时间:2019-06-12

本文共 1977 字,大约阅读时间需要 6 分钟。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace _01字符串Md5计算与文件Md5计算
{
    class Program
    {
        static void Main(string[] args)
        {
            #region 计算字符串的Md5值
            //while (true)
            //{
            //    Console.WriteLine("请输入一个字符串:");
            //    string msg = Console.ReadLine();
            //    string md5Str = Md5EncryptFromString(msg);
            //    Console.WriteLine(md5Str);
            //}
            #endregion
            #region 计算文件的Md5值
            //while (true)
            //{
            //    Console.WriteLine("请输入文件路径:");
            //    string path = Console.ReadLine();
            //    string md5File = Md5EncryptFromFile(path);
            //    Console.WriteLine(md5File);
            //}
            #endregion
            //using (MD5 md5 = MD5.Create())
            //{
            //}
            //MD5 md5 = MD5.Create();
            //md5.Dispose
            //FileStream fs;
            //fs.Dispose(
        }
        /// <summary>
        /// 根据文件路径,计算文件的Md5值。
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        private static string Md5FromFile(string path)
        {
            //1.创建Md5对象
            MD5 md5 = MD5.Create();
            using (FileStream fs = File.OpenRead(path))
            {
                byte[] byts = md5.ComputeHash(fs);
                md5.Clear();
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < byts.Length; i++)
                {
                    sb.Append(byts[i].ToString("x2"));
                }
                return sb.ToString();
            }
        }
        /// <summary>
        /// 计算字符串的Md5值
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        static string Md5FromString(string msg)
        {
            //创建了一个计算Md5值的对象
            MD5 md5 = MD5.Create();
            //先计算出msg字符串的byte数组
            //把字符串msg,根据utf-8编码,计算出byte[]
            //对于包含中文的字符串,计算字符串时如果采用不同的编码,比如utf-8或gb2312,所以计算出来的byte[]不同,进而通过ComputeHash(byte[])计算出的md5值也不同,所以建议大家计算md5值时都采用统一的编码,utf-8.
            byte[] byts = System.Text.Encoding.UTF8.GetBytes(msg);
            #region 1
            //根据byte[]数组,还原原来的字符串
            //string msg1=System.Text.Encoding.UTF8.GetString(byts);
            #endregion
            //开始计算Md5值。
            byte[] md5Byts = md5.ComputeHash(byts);
            //释放资源
            md5.Clear();
            //获取字符串
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < md5Byts.Length; i++)
            {
                sb.Append(md5Byts[i].ToString("x2"));
            }
            return sb.ToString();
        }
    }
}

转载于:https://www.cnblogs.com/nieyulin123/archive/2013/05/10/3070374.html

你可能感兴趣的文章
Excel2007制作直方图和正态分布曲线图
查看>>
android adb常用指令
查看>>
Android框架之路——GreenDao3.2.2的使用
查看>>
类方法WCF学习笔记-KnowTypeAttribute用法
查看>>
平台程序微信平台开发应用的签名
查看>>
程序卡OK6410裸板更新程序_update
查看>>
MYSQL用户名:root
查看>>
JavaScript 开发规范要求
查看>>
Devstack 安装OpenStack Pike版本(单机环境)
查看>>
Javascript 函数初探
查看>>
类的定义、声明使用
查看>>
转载,gini系数代码对应的公式
查看>>
编译安装mysql-5.6.40
查看>>
年终总结
查看>>
初创互联网公司技术架构变迁之路
查看>>
【BZOJ 3676】 3676: [Apio2014]回文串 (SAM+Manacher+倍增)
查看>>
【网络流24题】No. 13 星际转移问题 (网络判定 最大流)
查看>>
解析$.grep()源码及透过$.grep()看(两次取反)!!的作用
查看>>
[模板] 字符串hash
查看>>
SGU438_The Glorious Karlutka River =)
查看>>