项目总结md5的使用

  

MD5算法是一种散列(hash)算法(摘要算法,指纹算法),不是一种加密算法。<强>任何长度的任意内容都可以用MD5计算出散列值

。   ,   MD5长度一般是32位的16进制数字符串。   理论上,MD5值的个数是有限的,但是源数据是无限的,因此存在着不同的内容产生相同MD5值的概率。因此<强> MD5算法不可逆,也就是只能得到内容对应的MD5值,无法由MD5值反推内容。强但是对不同的内容产生相同MD5值的概率非常非常非常低!   ,   MD5算法理论上是不可逆的,因此* * *的唯一办法就是碰撞。   ,   1)使用MD5进行对<强>字符串强的操作,具体代码实现:   ,,,使用System.Security.Cryptography;//需要导入这个命名空间      ……,,   ,,,,静态void Main (string [] args)   ,,,,{   ,,,,,,Console.WriteLine(“请输入字符串,使用MD5加密…“);   ,,,,,,字符串str=Console.ReadLine ();   ,,,,,,字符串md5=Md5ChuLiStr (str);   ,,,,,,Console.WriteLine (md5);   ,   ,,,,,,Console.ReadKey ();   ,,,,}      ,,,,,私有静态string Md5ChuLiStr(字符串味精)   ,,,,{   ,,,,,,//1 .创建一个MD5对象   ,,,,,,MD5 MD5=MD5.Create ();   ,   ,,,,,,//2 .把字符串变为一个字节数组   ,,,,,,//对于中文或者某些字符,采用不同的编码生成的byte[]是不一样的,   ,,,,,,//所以造成了采用不同编码生成的md5值不一样的情况。   ,,,,,,缓冲区byte []=System.Text.Encoding.UTF8.GetBytes(味精);   ,   ,,,,,,//3。将一个byte[]通过MD5计算得到一个新的byte[],新的byte[]就是计算MD5后的结果。   ,,,,,,byte [] md5Buffer=md5.ComputeHash(缓冲);   ,   ,,,,,,<强>//释放资源   <强>,,,,,, md5.Clear ();   ,   ,,,,,,//4 .将计算后的结果直接显示为字符串   ,,,,,,StringBuilder某人=new StringBuilder ();   ,,,,,,for (int i=0;<强>我& lt;md5Buffer.Length 强;我+ +)   ,,,,,,{   ,,,,,,,,//x2:把每个数字转换为16进制,并保留两位数字。   ,,,,,,,,sb.Append (md5Buffer[我].ToString (“x2"));   ,,,,,,}   ,,,,,,返回sb.ToString ();   ,,,,}   ……   ,   ,   2)使用MD5进行对<强>文件的强操作,具体代码实现:   ,,,使用System.Security.Cryptography;//需要导入这个命名空间   ,,,使用先;//需要用到文件流等   ...      ,,,,静态void Main (string [] args)   ,,,,{   ,,,,,,Console.WriteLine(“请输入文件路径,使用MD5加密…“);   ,,,,,,字符串路径=Console.ReadLine ();   ,,,,,,字符串md5=Md5ChuLiFile(路径);   ,,,,,,Console.WriteLine (md5);   ,   ,,,,,,Console.ReadKey ();   ,,,,}   ,,,,私人静态string Md5ChuLiFile  (string路径)   ,,,,{   ,,,,,,MD5 MD5=MD5.Create ();   ,   ,,,,,,使用(FileStream fs=File.OpenRead(路径))   ,,,,,,{   ,,,,,,,,byte [] md5Buffer=md5.ComputeHash (fs);//这里直接传入文件流对象   ,,,,,,,,md5.Clear ();   ,   ,,,,,,,,StringBuilder某人=new StringBuilder ();   ,,,,,,,,for (int i=0;我& lt;md5Buffer.Length;我+ +)   ,,,,,,,,{   ,,,,,,,,,,sb.Append (md5Buffer[我].ToString (“x2"));   ,,,,,,,,}   ,,,,,,,,返回sb.ToString ();   ,,,,,,}   ,,,,}   ……   *:最后,产生的MD5值可以通过MD5计算器(CalcMD5.exe)进行对照。      

,

项目总结md5的使用