MD5算法【计算文件和字符串的MD5值】
1. MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法(易错)。任何长度的任意内容都可以用MD5计算出散列值。MD5的前身:MD2、MD3、MD4。介绍工具:CalcMD5.zip。主要作用就是【验明"真身"】,字符串文件均可(确保信息传输过程中的完整性、一致性)。
2. MD5算法的特点:
1. 长度固定
2. 单向性 ---- 可以通过MD5计算器来计算文件或者字符串的MD5值,但是不可以通过给出的MD5值来推算出文件或者字符串。
3. 抗冲突性(不重复)
4. "雪崩效应",只要源发生一点变化,就会造成大的变化
5. 不同的"源",生成的MD5值总是不一样的,相同的"源",产生的总是相同的MD5值。
6. 同样的内容,每次生成的MD5值是一样的。
3. 代码实现【计算文件和字符串的MD5值】
·计算字符串的MD5值:
///
<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); 使用系统默认的编码
byte[] msgBuffer
=
Encoding.UTF8.GetBytes(msg);
//2. 计算给定的字符串的MD5值
的byte[]数组转化为一个长度为32的字符串:就是把一个byte转成16进制同时保留2位即可。
byte[] md5Buffer=
md5.ComputeHash(msgBuffer);
md5.Clear();//释放资源
StringBuilder
sbMd5=new
StringBuilder();
for (int
i
=
0; i
<
md5Buffer.Length; i++)
{
进制输出,并保留2位
sbMd5.Append(md5Buffer[i].ToString("x2"));
}
return
sbMd5.ToString();
}
}
///
<summary>
///
计算文件的MD5值
///
</summary>
///
<param name="path"></param>
///
<returns></returns>
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();
}
}
}
MD5算法【计算文件和字符串的MD5值】的更多相关文章
- Android初级教程:对文件和字符串进行MD5加密工具类
转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/52200008 点击打开链接 之前写过一篇博文,是针对字符串进行md5加密的.今 ...
- linux下md5sum用法 (查看文件或字符串的md5值)
MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长 ...
- (工具类)MD5算法|时间格式转换|字符串转数字
package vote.utils; import java.security.MessageDigest; import java.text.SimpleDateFormat; import ja ...
- Levenshtein Distance + LCS 算法计算两个字符串的相似度
//LD最短编辑路径算法 public static int LevenshteinDistance(string source, string target) { int cell = source ...
- windows下计算文件的md和sha值
在windows下可以使用FCIV命令行工具计算文件的md5和sha值,具体例子如下: FCIV -md5 -sha1 path\filename.ext 例如: FCIV-md5-sha1 c:\w ...
- 《java入门第一季》之对文件和字符串进行MD5加密工具类
上一篇介绍了MD5加密算法,之前写的代码有些冗余,而且可读性很差.今天把对文本数据的加密,以及获取文件的md5值做一个封装类.代码如下: package com.itydl.utils; import ...
- iOS:使用莱文斯坦距离算法计算两串字符串的相似度
Levenshtein:莱文斯坦距离 Levenshtein的经典算法,参考http://en.wikipedia.org/wiki/Levenshtein_distance的伪代码实现的,同时参考了 ...
- 字符串、字节数组、流之间的相互转换以及文件MD5的计算
using System; using System.IO; using System.Security.Cryptography; using System.Text; namespace myMe ...
- c#计算文件的MD5值
代码: /// <summary> /// 计算文件的 MD5 值 /// </summary> /// <param name="fileName" ...
随机推荐
- hdu 2824The Euler function
题目链接 快速求出a到b之间所有数的欧拉函数. 一个一个求肯定是不行的, 我们知道欧拉函数的公式为phi(n) = n*(1-1/i1)*(1-1/i2).......i1, i2为素因子. 那么我们 ...
- linux环境变量配置总结
LD_LIBRARY_PATH: 动态库的查找路径设置:方法一: export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/XXX 但是登出后就失效方法二: 修改~/.bash ...
- C++读写EXCEL文件OLE,java读写excel文件POI 对比
C++读写EXCEL文件方式比较 有些朋友问代码的问题,将OLE读写的代码分享在这个地方,大家请自己看.http://www.cnblogs.com/destim/p/5476915.html C++ ...
- Jsoup代码解读之三-Document的输出
Jsoup代码解读之三-Document的输出 Jsoup官方说明里,一个重要的功能就是output tidy HTML.这里我们看看Jsoup是如何输出HTML的. HTML相关知识 分析代码前 ...
- linux 在终端中打开图形化文件管理器
虽然终端十分强大,但在少数使用终端的时候,会突然需要图形化文件管理器的帮忙. 命令: xdg-open "dir" 例如 xdg-open ./ 用图形化文件管理器打开当前文件夹 ...
- 阻止长按复制页面中的内容;zepto中touch中的应用必须先加载event模块之后;
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Ubuntu下lamp(PHP+Mysql+Apache)搭建+完全卸载卸载方法
安装apache2 sudo apt-get install apache2 安装完成,运行如下命令重启下: sudo /etc/init.d/apache2 restart 在浏览器里输入http: ...
- Database(Mysql)发版控制二
author:skate time:2014/08/18 Database(Mysql)发版控制 The Liquibase Tool related Database 一.Installation ...
- python邮件发送脚本
转自:http://phinecos.cnblogs.com/ #!/usr/bin/python #coding=utf-8 #@author:dengyike #@date:2010-09-28 ...
- 自己动手写 ASP.NET MVC 分页 part1
学习编程也有一年半载了,从来没有自己动手写过东西,都是利用搜索软件找代码,最近偶发感慨,难道真的继续做码农??? 突发奇想是不是该自己动手写点东西,可是算法.逻辑思维都太弱了,只能copy网上的代码, ...