MD5计算,一个扩展类,哪里都能用

最近有同学问到如何计算一个字节数组的MD5值,现在分享一个扩展类,有了它,MD5计算再也不用其他了。

先看示例:

string s = "hello world";var s_md5= s.ToMD5();string f = @"C:\Windows\explorer.exe";var f_md5 = f.ToMD5File();byte[] b = System.IO.File.ReadAllBytes(f);var b_md5 = b.ToMD5();

   使用起来是不是很简单?下面是完整代码:

using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace System
{/// <summary>/// MD5扩展类/// </summary>public static class MD5Extensions{/// <summary>/// 获取字符串的MD5值/// </summary>/// <param name="text">字符串</param>/// <param name="encode">编码,缺省UTF8</param>/// <returns>MD5 值</returns>public static string ToMD5(this string text, Encoding encode = null){if (encode == null) encode = Encoding.UTF8;MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();byte[] encryptedBytes = md5.ComputeHash(encode.GetBytes(text));return GetHashMD5(encryptedBytes);}/// <summary>/// 获取文件的MD5值/// </summary>/// <param name="path"></param>/// <returns></returns>public static string ToMD5File(this string path){try{using (Stream file = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)){return file.ToMD5();}}catch (Exception e){return e.ToString();}}/// <summary>/// 获取流的MD5值/// </summary>/// <param name="s">流</param>/// <returns>MD5值</returns>public static string ToMD5(this Stream stream){byte[] hashbyte;using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider()){hashbyte = md5.ComputeHash(stream);}return GetHashMD5(hashbyte);}/// <summary>/// 获取字节数组的MD5值/// </summary>/// <param name="buffer">数组</param>/// <returns>MD5值</returns>public static string ToMD5(this byte[] buffer){byte[] hashbyte;using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider()){hashbyte = md5.ComputeHash(buffer, 0, buffer.Length);}return GetHashMD5(hashbyte);}/// <summary>/// Hash值转换MD5值格式/// </summary>/// <param name="hashbyte">Hash值</param>/// <returns>MD5值</returns>private static string GetHashMD5(byte[] hashbyte){string result = BitConverter.ToString(hashbyte);return result.Replace("-", "");}}
}

如果你比较懒,那么就nuget搜索MD5Extensions插入到项目中吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292409.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字符串之翻转字符串

题目: 给定一个字符类型的数组chas,请在单词间做逆序调整,只要做到单词顺序即可,对空格的位置没有特别要求。 例如: 如果把chas看作字符串为“dog loves pig”,调整成“pig loves dog”. 如果把chas看作字符串为“Im a student.”,调整成“student. a Im”. 代码: pac…

noi 4982 踩方格

题目链接&#xff1a;http://noi.openjudge.cn/ch0206/4982/ 深搜很好写。 DP&#xff1a;O(n) d[i] 为走 I 不的方案数&#xff0c; l[i],r[i],u[i]为第一步走 左&#xff0c;右&#xff0c;上&#xff0c;共走 i 步的方案数。(u[i] d[i-1]) d[i] l[i] r[i] u[i] l[i-1] …

VB6之GIF分解

原文链接&#xff1a;http://hi.baidu.com/coo_boi/item/1264a64172fe8dec1f19bc08 还是找了个C的翻译下&#xff0c;原文链接&#xff1a;http://www.360doc.com/content/05/1122/15/1894_34348.shtml GDI的函数声明 我就不放上了&#xff0c;网上有个做好的GDI公共模块。 Pri…

MindFusion Pack for ASP.NET发布v2013.R2

在MindFusion.Diagramming for WebForms中&#xff1a;导入OpenOffice Draw文件新的DrawImporter类允许你通过OpenOffice Draw Vector图形编辑器导入后缀为*.odg的文件。只需添加一个引用到MindFusion.Diagramming.Import.Draw.dll组即可。你还可以使用导入法的多种重载将OpenO…

python中的常量可以修改吗_python实现不可修改的常量

因为种种原因&#xff0c;Python并未提供如C/C/Java一样的const修饰符&#xff0c;换言之&#xff0c;python中没有常量&#xff0c;至少截止2015年年末&#xff0c;还没有这个打算。Python程序一般通过约定俗成的变量名全大写的形式来表示这是一个常量&#xff0c;但是这终究不…

字符串之数组中两个字符串的最小距离

题目: 给定一个字符串数组strs, 再给定两个字符串str1和str2,返回在strs中str1和str2的最小距离,如果str1和str2为null,或者不再strs中,都返回-1 列如: strs = {"1","3","3","2","3","1","3"} ,…

【翻译】C#表达式中的动态查询

当您使用LINQ来处理数据库时&#xff0c;这种体验是一种神奇的体验&#xff0c;对吗&#xff1f;你把数据库实体像一个普通的收集&#xff0c;使用Linq中像Where&#xff0c;Select或者 Take&#xff0c;这些简单的使用就能让代码可用了。但是&#xff0c;让我们考虑一下这里是…

SVD++:推荐系统的基于矩阵分解的协同过滤算法的提高

1.背景知识 在讲SVD之前&#xff0c;我还是想先回到基于物品相似的协同过滤算法。这个算法基本思想是找出一个用户有过正反馈的物品的相似的物品来给其作为推荐。其公式为&#xff1a; 其中 rui 表示预测用户u对物品i的喜爱程度。wij 是物品i&#xff0c;j之间的相似度&#xf…

资源文件(.RES)的应用

资源档有什麽用处呢&#xff1f;最重要的有两个地方1.国际发行&#xff1a;我们将Application中所有的文字从Resource用读取&#xff0c;那麽&#xff0c;只要更动 Resource档的内容&#xff0c;就可以用不同语言的方式来显示。2.管理资源&#xff1a;例如说&#x…

Linux下Tomcat设置自动启动

在linux系统下&#xff0c;设置某个服务自启动的话&#xff0c;需要在/etc/rcX.d下挂载&#xff0c;还要在/etc/init.d/下写启动脚本的。 1、我们在/etc/init.d/下新建一个文件tomcat&#xff08;需要在root权限下操作&#xff09; vi /etc/init.d/tomcat#!/bin/sh # chkconfig…

Android插件化开发之动态加载的类型

https://segmentfault.com/a/1190000005113493 基本信息 Author&#xff1a;kaedea GitHub&#xff1a;android-dynamical-loading 现在网络上有许多关于动态加载的介绍的文章&#xff0c;谈及的关键词汇有动态加载、插件化、热部署、热修复等&#xff0c;对于一些刚接触这方…

c# 爬虫 -ChromeDriver+HtmlAgilityPack爬取比赛实时比分

背景最近NBA总决赛吸引了不少球迷&#xff0c;但是因为时差的关系&#xff0c;人家在比赛&#xff0c;我们在上班&#xff0c;有时候上班又不好意思光明正大的看比赛&#xff0c;那有什么办法 可以光明正大的看又不被发现呢。有&#xff0c;自己动手丰衣足食&#xff0c;Chrome…

Codevs2157 配对

题目描述 Description给出2个序列A{a[1]&#xff0c;a[2]&#xff0c;…&#xff0c;a[n]}&#xff0c;B{b[1]&#xff0c;b[2]&#xff0c;…&#xff0c;b[n]}&#xff0c;从A、B中各选出n个元素进行一一配对&#xff08;可以不按照原来在序列中的顺序&#xff09;&#xff0…

UITableView的优化原理

2019独角兽企业重金招聘Python工程师标准>>> 当我们下啦一个 UITableView时&#xff0c;如果没有做优化&#xff0c;只是简单的实现功能代码如下&#xff0c;这样当我们有上百条tableviewcell的时候&#xff0c;我们滑动的非常快时会非常费内存&#xff0c;当然苹果…

深入浅出Mybatis系列(一)---Mybatis入门[转]

最近两年 springmvc mybatis 的在这种搭配还是蛮火的&#xff0c;楼主我呢&#xff0c;也从来没真正去接触过mybatis, 趁近日得闲&#xff0c; 就去学习一下mybatis吧。 本次拟根据自己的学习进度&#xff0c;做一次关于mybatis 的一系列教程&#xff0c; 记录自己的学习历程&…

字符串之括号的有效性

题目: 给定一个字符串str,判断是不是整体有效的括号字符串 举例: str = "()" return true; stre = "()()" return true; str = "())" return false; str = "()a()" return false; 代码: package com.chenyu.string.cn;public class…

python为text添加滚动条_在Tkinter中向一组小部件添加滚动条

概述您只能将滚动条与一些小部件关联起来&#xff0c;根小部件和Frame不是那组小部件的一部分。最常见的解决方案是创建一个画布小部件&#xff0c;并将滚动条与该小部件关联起来。然后&#xff0c;将包含标签小部件的框架嵌入到画布中。确定框架的宽度/高度&#xff0c;并将其…