文章教程

9.1在ASP.NET中应用MD5加密技术

8/31/2020 8:52:25 PM 人评论 次浏览

9.1 在ASP.NET中应用MD5加密技术

学习目标

了解ASP.NET中的加密算法和MD5加密技术。

9.1.1 MD5加密技术概述

MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被“压缩”成一种保密的格式,数据的少量更改会在MD5算法中产生不可预知的大量更改,所以很难从加密后的文字中找到加密前字符串的蛛丝马迹。

虽说2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。但是笔者认为对普通软件来说,这个加密安全程度已经足够了。

通常程序开发使用MD5加密算法用的最多的无非就是加密用户密码,把加密好的密码存储到数据库中,进行密码比较的时候,把用户输入的密码再进行加密,然后与数据库中的密文进行比较来验证用户输入的密码是否正确。至于ASP.NET中是如何实现MD5加密算法的,这个就不需要关心,会用就行了。

9.1.2 ASP.NET中的加密算法

在ASP.NET中常用的加密算法有两种,分别是MD5和SHA1,二者用法大致相同,只是使用的具体类不一样,用的更多的是第一种MD5。

MD5相关类:

System.Security.Cryptography.MD5
System.Security.Cryptography.MD5CryptoServiceProvider()
System.Web.Security.FormsAuthentication.HashPasswordForStoringI
nConfigFile(strSource, "MD5")

SHA1相关类:

System.Security.Cryptography.SHA1
System.Security.Cryptography.SHA1CryptoServiceProvider()
System.Web.Security.FormsAuthentication.HashPasswordForStoringI
nConfigFile(strSource, "SHA1")

9.1.3 MD5方法封装

在ASP.NET,虽然MD5加密代码不是很难,但是代码还是很多的,通常都是把这些代码封装在一个用户自定义的方法中,通常这个方法命名就是Get_MD5,接下来给出该封装方法的完整代码。

public string Get_MD5(string strSource)
{
    MD5 md5 = new MD5CryptoServiceProvider();
    //获取密文字节数组
    byte[] bytResult = md5.ComputeHash(Encoding.Default.
    GetBytes(strSource));
    //转换成字符串,32位
    string strResult = BitConverter.ToString(bytResult);
    //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉
    strResult = strResult.Replace("-", "");
    return strResult;
}

其中该方法的程序页面至少需要导入如下两个命名空间:

using System.Security.Cryptography;
using System.Text;

完整代码参见:Code/ch09/ Study_MD5_KindEditor_CheckCode/study_md5.aspx。

教程类别