md5加密:MD5加密简介以及C#下的操作实现来源: 发布时间:星期日, 2008年10月19日 浏览:30次 评论:0
://bbs.bc-cn.net/dispbbs.asp?boardid=117&id=158930*/ --------------------------------------------------------------------------------------
*/ 出自: 编程中国 http://www.bc-cn.net */ 作者: 天使不哭 E-mail:[email protected] QQ:49849668 */ 时间: 2007-7-29 编程论坛首发 */ 声明: 尊重作者劳动,转载请保留本段文字 */ -------------------------------------------------------------------------------------- 一:关于MD5加密 (这段文字称不上是原创,从网上找的关于MD5加密的简介,精选了一下,找了一段比较容易理解的给大家看。) MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。 Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了“字节串”而不是“字符串”这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。 MD5将任意长度的“字节串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。 有上面的简介大家应该对MD5有所了解,也应该可以看出MD5加密是无法进行解密的(当然这个也不是绝对的,当然这个我们这篇文章不研究),例如一个string,利用MD5算法进行加密以后你是无法将他还原为原来的string。看到这个的时候可能有些菜鸟会有疑问了,不能解密我又应该怎么样来利用他呢?实际上想明白了就很简单,在日常开发中,如果数据没有采用任何加密算法进行加密的话,数据在数据库的存储方式是以明文形式存放的,一旦数据库被破解,也就是意味着数据泄露,但是如果数据经过加密,就算数据库被破解,他们所看到的也只是一堆毫无排列顺序可言的数字或字符,当然我们自己看到的也是,呵呵,废话了啊。 但是MD5加密有一个特点,就是同一个string在同样的编码方式下加密的结果是一样的,看到这,我也大家也应该明白了点吧,我们所能做的就是通过对加密后的数据进行比较而达到我们的目的,好了,废话结束,下面开始C#下MD5加密的教程。不过如果是菜鸟的话我还是希望能看看上面的文字,希望通过这段文字可以让你对MD5有一定的了解。 二:C#下的MD5加密实现 怕有些菜鸟看不太懂,我没有使用ConsoleCode项目实现,而是利用一个简单的Winform程序表达我想表达的意思。 (1):窗体控件布局如图 此主题相关图片如下: ![]() (2):控件作用 textbox1:输入待加密的string button1:输出加密结果到label1; button2:输出加密结果到label2;(主要用两次加密结果的比较) label1,label2:显示结果 (3):完整代码如下 (Form1.cs) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Security.Cryptography; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private string MD5Create(string STR) //STR为待加密的string { string pwd = ""; //pwd为加密结果 MD5 md5 = MD5.Create(); byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(STR)); //这里的UTF8是编码方式,你可以采用你喜欢的方式进行,比如UNcode等等 for (int i = 0; i < s.Length; i++) [ft=,,] { 0
相关文章
读者评论
发表评论 |