C#实现MD5

什么是MD5?

  MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一,主流编程语言普遍已有MD5实现。

MD5的特点:

  • 压缩性:任意长度的数据,算出的MD5值长度都是固定的。
  • 容易计算:从原数据计算出MD5值很容易。
  • 抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
  • 强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
 1 using System;
 2 using System.Collections.Generic;
 3 using System.IO;
 4 using System.Linq;
 5 using System.Security.Cryptography;
 6 using System.Text;
 7 using System.Threading.Tasks;
 8
 9 namespace ConsoleApplication1
10 {
11     public class MD5Helper
12     {
13         /// <summary>
14         /// 计算字节数组的 MD5 值
15         /// </summary>
16         /// <param name="buffer"></param>
17         /// <returns></returns>
18         public static string CalcMD5(byte[] buffer)
19         {
20             using (MD5 md5 = MD5.Create())
21             {
22                 byte[] md5Bytes = md5.ComputeHash(buffer);
23                 return BytesToString(md5Bytes);
24             }
25         }
26
27         /// <summary>
28         /// 将得到的 MD5 字节数组转成 字符串
29         /// </summary>
30         /// <param name="md5Bytes"></param>
31         /// <returns></returns>
32         private static string BytesToString(byte[] md5Bytes)
33         {
34             StringBuilder sb = new StringBuilder();
35             for (int i = 0; i < md5Bytes.Length; i++)
36             {
37                 sb.Append(md5Bytes[i].ToString("X2"));
38             }
39             return sb.ToString();
40         }
41
42         /// <summary>
43         /// 计算字符串的 MD5 值
44         /// </summary>
45         /// <param name="str"></param>
46         /// <returns></returns>
47         public static string CalcMD5(string str)
48         {
49             byte[] buffer = Encoding.UTF8.GetBytes(str);
50             return CalcMD5(buffer);
51         }
52
53         /// <summary>
54         /// 计算流的 MD5 值
55         /// </summary>
56         /// <param name="stream"></param>
57         /// <returns></returns>
58         public static string CalcMD5(Stream stream)
59         {
60             using (MD5 md5 = MD5.Create())
61             {
62                 byte[] buffer = md5.ComputeHash(stream);
63                 return BytesToString(buffer);
64             }
65         }
66     }
67 }
时间: 2024-07-28 19:40:41

C#实现MD5的相关文章

&#65279;&#65279;iPhone6plus 的 iOS 11 GM和正式版安装包的 md5一模一样

同上:chens-MacBook-Air:~ chen$ md5 /Users/chen/Downloads/iPhone_5.5_11.0_15A372_Restore.ipsw MD5 (/Users/chen/Downloads/iPhone_5.5_11.0_15A372_Restore.ipsw) = 0473f217af0f20e138649385de6db6c7GM 版本的 md5 chens-MacBook-Air:~ chen$ md5 /Users/chen/Download

C# MD5

private static string GetMd5String(string msg) { StringBuilder sb = new StringBuilder(); using(MD5 md5 = MD5.Create()) { byte[] bytes = Encoding.UTF8.GetBytes(msg); byte[] md5Byte = md5.ComputeHash(bytes); for (int i = 0; i < md5Byte.Length; i++) { s

MD5加密和RSA加密

1.MD5加密  MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),MD5算法的使用不需要支付任何版权费用. MD5的功能:     ①.输入任意长度的信息,经过处理,输出为128位的信息(数字指纹):    ②.不同的输入得到的不同的结果(唯一性):    ③.根据128位的输出结果不可能反推出输入的信息(不可逆),也就是只能加密,不能解密:  MD5的用途:     1.防止被篡改:    1)比如发送一个电子文档,发送前,我先得到MD5的

字符串以及文件的hashlib的md5和sha1等的运用

hashlib的md5和sha1等的运用 import hashlib print(hashlib.algorithms_available) print(hashlib.algorithms_guaranteed) #MD5 import hashlib hash_object = hashlib.md5(b'Hello World') print(hash_object.hexdigest()) # import hashlib mystring = input('Enter String

阿里云oss Multipart Upload 中每个part的E-tag(即MD5)求法

阿里云java的开发文档中提到:OSS 会将服务器端收到 Part 数据的 MD5 值放在 ETag 头内返回给用户. 为了保证数据在网络传输过程中不出现错误,强烈推荐用户在收到 OSS 的返回请求后,用该 MD5 值验证上传数据的正确性. 但是没有告诉怎么验证,纠结了一天之后终于找到了在本地求每个part的MD5值得方法: <span style="font-size:18px;">private static HashMap<Integer, String>

&nbsp; &nbsp; MD5,MySQL,SHA解密 - 利用GPU进行密码破解

使用方法: 1 打开命令行cmd 然后切换到egb的目录,假设你的文件夹在f盘,则输入:  f:2. 在当前目录输入: egb.exe /info查看你的电脑是否支持使用CUDA3. 可以将要破解的文件放置到当前目录4. 回到命令窗口,输入: egb.exe MD5 Settings/MD5.ini password.txt5. 上面的MD5表示使用MD5解密方式,而Settings/MD5.ini则是具体的配置文件.程序内置了72中不同类型的解密配置文件,可以自己浏览一下. 而passwd.t

【iOS】MD5加密与网络数据安全

在做网络应用程序的时候, 时时刻刻要保证用户数据的安全, 因此要加密. MD5算法在国内用的很多. MD5算法的特点: *同样的数据加密结果是一样的.(32个字符) *不可逆的.(不能逆向解密) *可用于文件校验/指纹识别. MD5算法是公开的,iOS中已经包装好了MD5算法. 可以将其写成字符串的分类: - (NSString *)md5String { const char *string = self.UTF8String; int length = (int)strlen(string)

快速遍历对比两个文件下的md5值

[[email protected] Activity]# find /opt/xyrpg/rpgserver_s1/XMLData/Activity/ -type f -exec md5sum {} \;|sed 's/rpgserver_s1/rpgserver_s2/'|md5sum -c /opt/xyrpg/rpgserver_s2/XMLData/Activity/ActivityCondition.xml: FAILED /opt/xyrpg/rpgserver_s2/XMLDat

HMAC-SHA256 &amp; MD5 In C#

C#中两个常用的加密方法: 个人Mark,仅作参考. public static class Extends { /// <summary> /// HMAC SHA256 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string Sha256(this string str) { byte[

shiro自定义realm支持MD5算法(六)

1.1     散列算法 通常需要对密码 进行散列,常用的有md5.sha, 对md5密码,如果知道散列后的值可以通过穷举算法,得到md5密码对应的明文. 建议对md5进行散列时加salt(盐),进行加密相当 于对原始密码+盐进行散列.(盐就相当于加入一个随机数) 正常使用时散列方法: 在程序中对原始密码+盐进行散列,将散列值存储到数据库中,并且还要将盐也要存储在数据库中. 如果进行密码对比时,使用相同 方法,将原始密码+盐进行散列,进行比对. 1.2 MD5测试 package cn.qlq.