首先说一下MD5值的概念和来源。MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。
Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了“字节串”而不是“字符串”这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。 MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
使用MD5进行加密后的数据是不可逆的,可以用在数据库中对密码进行加密,保证用户的安全。
protected void Btn_MD5_Click(object sender, EventArgs e) { //获取加密内容 string Context = this.Tbx_Context.Text; ClientScript.RegisterClientScriptBlock(GetType(), "msg", "<script>alert('加密的结果:" + GetMD5Data(Context) + "')</script>"); } public string GetMD5Data(string p_Date) { //创建MD5对象 MD5 md5 = MD5.Create(); //开始加密,将字符串转换为字节数组,二进制的; byte[] buffer = Encoding.UTF8.GetBytes(p_Date); byte[] MD5buffer = md5.ComputeHash(buffer);//将字节数组中的每个元素ToString(); StringBuilder p_sb= new StringBuilder(); for (int i = 0; i < MD5buffer.Length; i++) { p_sb.Append(MD5buffer[i].ToString("x2")); } return result.ToString(); }