对数据进行md5值加密
在.net中封装了好多种方法对数据进行加密。首先有一种最简单的方法
string md51 = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile("你好", "MD5");
用这种方法进行加密,你会发现加密汉字和别的网站所加密出的结果是不一样的。
网站的结果为:B94AE3C6D892B29CF48D9BEA819B27B9
这个的结果为:7ECA689F0D3389D9DEA66AE112E5CFD7
这个方法对我们来说加密的就是一个字符串“你好”,但是在net内部机制中,会为这个字符串进行转换,然后加密,查一下msdn你会发现这个函数的描述是: 根据指定的密码和哈希算法生成一个适合于存储在配置文件中的哈希密码。
这个哈希码是存在于配置文件中的,而不是我们通用的真正的值
下面再介绍一种方法对数据进行加密:
//将字符转换为指定编码的字节数组 Byte[] byteToHash = System.Text.Encoding.GetEncoding("gb2312").GetBytes("你好");
//使用直接创建的 MD5 类的实例创建 byteToHash 的哈希值 byte[] hashvalue = (new MD5CryptoServiceProvider()).ComputeHash(byteToHash);
//将byte数组转化为string string hashString = BitConverter.ToString(hashvalue);
这个函数ComputeHash是将字节数据进行加密的。无论是那一种平台,数据在内存中的值是一样的,我们根据内存进行加密的数据,和对方根据内存进行加密的数据必然是一样的了。
但是内存也有好几种,我们将字符转换为内存时有几种编码方式,不同的编码方式所对应的内存是不一样的,所以我们在转换为内存数组时需要指定编码方式。
在net中,string的存储方式默认为宽字符,默认的编码为gb2312.
还有一种方法也可以将数据转换编码格式
System.Web.HttpUtility.UrlEncode("衣服", System.Text.Encoding.UTF8);
这种转换方式只是对应url的,它是用于网页间传输的一种编码格式。用它转换后的utf-8将会增加好多%。