基本概念:
基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密
文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读
的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。
功能:
- 保密性:帮助保护用户的标识或数据不被读取。
- 数据完整性:帮助保护数据不更改。
- 身份验证:确保数据发自特定的一方。
分类:
对称(symmetric)算法:在加密和解密数据时使用相同的密钥和初始化矢量,典型的有DES、TripleDES和Rijndael
算法,它适用于不需要传递密钥的情况,主要用于本地文档或数据的加密。
不对称(asymmetric)算法:有两个不同的密钥,分别是公共密钥和私有密钥,公共密钥在网络中传递,用于加密
数据,而私有密钥用于解密数据。不对称算法主要有RSA、DSA等,主要用于网络数据的加密。
哈希算法:将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数
据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希计算都将产生
不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的。消息身份验证代码(MAC) 哈希函数通常
与数字签名一起用于对数据进行签名,而消息检测代码 (MDC) 哈希函数则用于数据完整性。
.net加密算法—MD5
以上是对常用加密算法的一个概述,而在.net中,将密码服务功能封装成了System.Security.Cryptography命名
空间,这样使密码服务更容易实现,该名字空间包含了实现安全方案的类,例如加密和解密数据、管理密钥、验证数
据的完整性并确保数据没有被篡改等等。
在牛腩中出现的MD5加密方式就是其中的一种,MD5的全称是Message-DigestAlgorithm 5(信息-摘要算法),在
90年代初由MIT Laboratory for Computer Science和RSA DataSecurity Inc的Ronald L.Rivest开发出来,经MD2、
MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把
一个任意长度的字节串变换成一定长的大整数)。(摘自百度百科)
md5加密是一个非常好的一个加密方式,在.net中封装了一个MD5的加密方式, 所以用起来也很简单, 我们只要
调用一下来使用就可以了,想要了解md5的加密原理, 有兴趣的人可以查看一些加密函数!
分享一个简单的小例子:
<title>MD5加密实例</title>
</head>
<body>
MD5加密<form id="Form1" runat="server">
<asp:label id="show1" runat="server"></asp:label>
<asp:label id="show2" runat="server"></asp:label>
<asp:textbox ID="txtMD" runat="server" TextMode="SingleLine" Text="wyj" AutoPostBack="true" />
[输入按回车]
</form>
</body>
///MD5加密的实例
protected void Page_Load(object sender, EventArgs e)
{
//将要加密的字符串转化为byte类型
byte[] data = System.Text.Encoding.Unicode.GetBytes(txtMD.Text.ToCharArray());
//创建一个Md5对象
System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
//加密Byte[]数组
byte[] result = md5.ComputeHash(data);
//将加密后的数组转化为字段
string sResult = System.Text.Encoding.Unicode.GetString(result);
//打印普通加密后的结果
show1.Text = "MD5普通加密:" + sResult.ToString() + "<br/>";
//打印密码方式加密
string EnPswdStr = System.Web.Security.FormsAuthentication.
HashPasswordForStoringInConfigFile(txtMD.Text.ToString (), "MD5");
//显示出来
show2.Text = "MD5密码加密:" + EnPswdStr + "<br/>";
}
在这个网络安全越来越被人们重视的时代,了解加密算法是我们必须做的,现在只是接触了一些基本概念,期待
以后对他们的深入学习!