我自己整理的MD5方法(ASP.NET)

来源:互联网 发布:平邑网络招聘网站 编辑:程序博客网 时间:2024/05/20 07:52

今天第一次写点东西,就把自己工作中遇到的一些问题,解决的方法写出来。大部分的思路和方法也是来源于互联网,也许是搬门弄斧,但我也更希望能给需要的朋友带来点帮助。

在进行软件开发的过程中,为了提高系统的安全性能,经常需要进行敏感信息的加密处理。特别是在密码储存、文件传输、页面传值等方面,对信息进行加密显得十分必要。目前比较流行的就是MD5、SHA1等加密算法,这里先简单作些记录:

(1) MD5

MD5的全称是Message-digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc,的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是MD2、MD4还是MD5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但MD2的设计与MD4和MD5完全不同,那是因为MD2是为8位机器做过设计优化的,而MD4和MD5却是面向32位的电脑。

简单例子:

    public static string MD5(string toCryString)

    {

      ///方法一

      /////public string md5(string str,int code) 

        if (code == 16) //16MD5加密(取32位加密的9~25字符)

        {

            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, MD5).ToLower().Substring(8, 16);

        }

        if (code == 32) //32位加密  

        {

            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, MD5).ToLower();

        }

        return 00000000000000000000000000000000;  

 

        ///方法二

        //using System.Security.Cryptography;

        //using System.Text;

        MD5CryptoServiceProvider hashmd5;

        hashmd5 = new MD5CryptoServiceProvider();

 

        //asp是小写,把所有字符变小写

        return BitConverter.ToString(hashmd5.ComputeHash(Encoding.Default.GetBytes(toCryString))).Replace("-", "").ToLower();

 

        ///方法三(一个简单的方法)已经实验可用           

        if(!String.IsNullOrEmpty(toCryString)

        { 

           return FormsAuthentication.HashPasswordForStoringInConfigFile(toCryString, "MD5");  

        }

        else

        { 

            return string.Empty;

        }

    }

(2)SHA1

安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)对于长度小于2^64位的消息SHA1会产生一个160位的消息摘要当接收到消息的时候这个消息摘要可以用来验证数据的完整性在传输的过程中,数据很可能会发生变化那么这时候就会产生不同的消息摘要

SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要

简单例子: 

private string getSHA(string code)
     
{
       
if (!String.IsNullOrEmpty(code))
        
{
          
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(code, "SHA1").ToLower();
         }

       
else
        
{
          
return string.Empty;
        }

     }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

原创粉丝点击