C#中MD5实现
在C#中使用MD5可以通过“HashPasswordForStoringInConfigFile”、“MD5CryptoServiceProvider”、“Cryptography.MD5”等各种方式实现。最简单的方式是用“HashPasswordForStoringInConfigFile”,例如:
pass = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(pass, "md5").ToLower();
该方法用于处理英文的字符串没有什么问题,但如果在使用UTF8编码的aspx中处理“GB2312”编码的字符串可能就得不到正确结果,这是由于它是以String为参数而不是byte[]。
第二种方法是用“MD5CryptoServiceProvider”,例如:
static string MyMd5_1(string str)
{
//byte[] b = System.Text.Encoding.Default.GetBytes(str);
byte[] b = System.Text.Encoding.GetEncoding("gb2312").GetBytes(str);
byte[] d = new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(b);
string r = "";
for (int i = 0; i < d.Length; i++)
r += d.ToString("x").PadLeft(2, '0');
return r;
}
第三种方法是用“Cryptography.MD5”,例如:
static string MyMd5_2(string str)
{
//byte[] b = System.Text.Encoding.Default.GetBytes(str);
byte[] b = System.Text.Encoding.GetEncoding("gb2312").GetBytes(str);
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] d = md5.ComputeHash(b);
string r = "";
for (int i = 0; i < d.Length; i++)
r += d.ToString("x").PadLeft(2, '0');
return r;
}
后两种方法实际上是以byte[]为参数的,因此可以很方便的改成处理各种语言编码的字符串。 我晕 这么强大的东西 居然没人UP? 没这么多吧,一般就行 谢谢分享~
刚好学习一下~
想做一个类似的! 我来UP!!!!!!!!!!!!!! 刚好用到,多谢楼主 这个我顶,虽然我是学VB.NET,但两个通用 本帖最后由 killerwy 于 2013-1-13 22:40 编辑
//获取md5
publicstring getmd5(string path)
{
FileStream get_file =new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
System.Security.Cryptography.MD5CryptoServiceProvider get_md5 =new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] hash_byte = get_md5.ComputeHash(get_file);
string md5str = System.BitConverter.ToString(hash_byte);
md5str = md5str.Replace("-", "");
return md5str;
}
//获取sha1
publicstring getsha1(string path)
{
FileStream get_file =new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);
System.Security.Cryptography.SHA1CryptoServiceProvider get_sha1 =new System.Security.Cryptography.SHA1CryptoServiceProvider();
byte[] hash_byte = get_sha1.ComputeHash(get_file);
string sha1str = System.BitConverter.ToString(hash_byte);
sha1str = sha1str.Replace("-", "");
return sha1str;
}
其实这样就搞定了哦
PS 你改下分类呗 c# 属于.net里的哦 亲
页:
[1]