码迷,mamicode.com
首页 > 其他好文 > 详细

MD5和sha1加密算法

时间:2014-05-10 08:21:47      阅读:305      评论:0      收藏:0      [点我收藏+]

标签:style   class   code   ext   color   c   

在很多电子商务和社区应用中,我们都要存放很多的客户的资料,其中包括了很多的隐私信息和客户不愿被别人看到的信息,当然好有客户执行各种操作的密码,此时就需要对客户的信息进行加密再存储,目前有两种比较好的加密算法:MD5和sha1。

这两种加密算法都属于散列加密技术。所谓散列加密就是无论输入的字符串是什么,有多大,加密后都将变成唯一的定长的加密串。

首先介绍一下MD5,MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意是“字节串”而不是“字符串”,是因为这种变换只与字节的值有关,与字符集或编码方式无关。MD5将任意长度的“字节串”变换成一个128bit的大整数,并且这是一个不可逆的变换过程,要破解只能穷举,难度很大,理论上8位的密码组合有(26字母+10数字+21常用英文符号)的8次方种可能,以现在比较好的机器机器要算上一年多。MD5加密后的密串长度有16位和32位两种。不过最近MD5听说被破解了(听说还是被我们的国人破掉的,佩服啊!),能很快碰撞到密码,不过破解机还没有流传出来。

MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹),以防止被“篡改”。举个例子,你将一段话写在一个叫readme.txt文件中,并对这个readme.txt产生一个MD5的值并记录在案,然后你可以传播这个文件给别人,别人如果修改了文件中的任何内容,你对这个文件重新计算MD5时就会发现。如果再有一个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。

在Microsoft Visual Studio 2005对MD5加密算法有了很好的支持,使用起来非常简单,下面是在C#中使用MD5加密字符串的例子:

public string md5(string str,int code)
{
    if(code==16) //16位MD5加密(取32位加密的9~25字符)
    {
        return System.Web.Security.FormsAuthentication.

               HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16) ;
    }
    else//32位加密
    {
        return System.Web.Security.FormsAuthentication.

               HashPasswordForStoringInConfigFile(str,"MD5").ToLower();
    }
}

使用sha1算法加密后的密串长度有40位,相对更安全一些。

在Microsoft Visual Studio 2005对sha1的使用也很简单,下面是在C#中使用sha1加密字符串的例子:

public string sha1(string str)
{        
    return System.Web.Security.FormsAuthentication.

           HashPasswordForStoringInConfigFile(str, "sha1").ToLower();        
}

不过最后还有一个不幸的消息,就是sha1算法已经被破解,国家标准和科技学院(National Institute of Standards and Technology)已经推荐使用sha-256或者sha-512算法。

MD5和sha1加密算法,布布扣,bubuko.com

MD5和sha1加密算法

标签:style   class   code   ext   color   c   

原文地址:http://www.cnblogs.com/hnhsl/p/3719194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!