您的位置:首页 > 编程语言 > C#

MD5加密字符串与文件

2013-10-28 12:15 411 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.IO;

namespace md5
{
public class MD5
{
/// <summary>
/// 加密字符串,对密码等敏感信息加密
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string MD5Str(string str)
{
//创建加密对象
System.Security.Cryptography.MD5 md5 = new MD5CryptoServiceProvider();
//将字符串转为字符数组
byte[] bStr = Encoding.UTF8.GetBytes(str);
//加密
byte[] sMd5 = md5.ComputeHash(bStr);
md5.Clear();
//格式转换
StringBuilder sb = new StringBuilder();
foreach (var item in sMd5)
{
sb.Append(item.ToString("x2"));
}
return sb.ToString();
}
/// <summary>
/// 加密文件,通常用于文件完整性校验,如当下载一个文件时,会得到一个文件MD5值。
/// 文件下载完成后由用户自行加密,得到一个MD5值,两个MD5相比较。
/// 如果完全一样,表示此文件没有被第三方修改过,即可确认为此文件就是上传方上传的完整文件,安全程度高
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public string MD5File(string path)
{
StringBuilder sb = new StringBuilder();
using (FileStream fs = File.OpenRead(path))
{
System.Security.Cryptography.MD5 md5 = new MD5CryptoServiceProvider();
byte[] bMd5 = md5.ComputeHash(fs);
md5.Clear();
foreach (var item in bMd5)
{
sb.Append(item.ToString("x2"));
}
return sb.ToString();
}
}
//说明:1、ToString("x2") ToString()中的字符代表着字符串的格式控制,X代表16进制,2代表着两位数,不足位是补0(零)
//      此外还有ToString("d") 格式为:2003-9-23。        ToString("t") 格式为:14:24   
}
}

对于MD5的真正解密并不存在,在密码的应用中,采用的是碰撞方式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  md5 C#md5 .netmd5
相关文章推荐