在网上搜罗了一下,搜到很多雷同文章,摘引如下:
public static string MD5(string Sourcein)
{
MD5CryptoServiceProvider MD5CSP = new MD5CryptoServiceProvider();
byte[] MD5Source = System.Text.Encoding.UTF8.GetBytes(Sourcein);
byte[] MD5Out = MD5CSP.ComputeHash(MD5Source);
return Convert.ToBase64String(MD5Out);
}
而如此做的话,Convert.ToBase64String出来的会是一串包含字母数字以及符合的字符串,例如:afw1fw3j=-
这样是与储存在数据库中的加密后字符串不相同的,自然无法比较。数据库中储存的是类似BABA327D241746EE0829E7E88117D4D5这样的字符串。
Google许久,未曾找到在ASP.NET中是怎么实现上述样子的输出的。于是自己动手,查阅MSDN,无数次实践,终于找到方法,就是用.NET中的BitConverter类,废话不多说,把代码贴出来,
private void btnMd5_Click( object sender, EventArgs e ) {
if (string.IsNullOrEmpty(txtSrc.Text)) {
txtSrc.Text = "Please Input your string to Encrype";
return;
}
MD5CryptoServiceProvider md5Encrypter = new MD5CryptoServiceProvider();
byte[] theSrc = Encoding.UTF8.GetBytes( txtSrc.Text );
byte[] theResBytes = md5Encrypter.ComputeHash( theSrc );
txtResult.Text = BitConverter.ToString( theResBytes ).Replace( "-", "" );
}
private void btnHash_Click( object sender, EventArgs e ) {
if (string.IsNullOrEmpty( txtSrc.Text )) {
txtSrc.Text = "Please Input your string to Encrype";
return;
}
HashAlgorithm hashEncrypter = new SHA1Managed();
byte[] theSrc = Encoding.UTF8.GetBytes( txtSrc.Text );
byte[] theResBytes = hashEncrypter.ComputeHash( theSrc );
txtResult.Text = BitConverter.ToString( theResBytes ).Replace( "-", "" );
}