`

SHA1与MD5

    博客分类:
  • java
 
阅读更多
原文地址:http://blog.csdn.net/fogle/article/details/5688463




SHA1的使用



SHA1的全称是Secure Hash Algorithm(安全哈希算法)。加密哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。所以你很难从加密后的文字中找到蛛丝马迹。

SHA1 算法的哈希值大小为 160 位。是一种不可逆的算法。





SHA1相关:

[c-sharp] view plaincopy
System.Security.Cryptography.SHA1 
System.Security.Cryptography.SHA1CryptoServiceProvider() 
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "SHA1") 


例子:

[c-sharp] view plaincopy
/// <summary> 
      /// 方法一:通过使用 new 运算符创建对象 
    /// <summary> 
     /// <param name="strSource">需要加密的明文</param> 
     /// <returns>返回16位加密结果,该结果取32位加密结果的第9位到25位</returns> 
    public string Get_SHA_Method1(string strSource) 
    { 
      //new 
        System.Security.Cryptography.SHA1 sha= new System.Security.Cryptography.SHA1CryptoServiceProvider(); 
        //获取密文字节数组 
       byte [] bytResult = sha.ComputeHash(System.Text.Encoding.Default.GetBytes(strSource)); 
        //转换成字符串,并取9到25位 
        //string strResult = BitConverter.ToString(bytResult, 4,
        //转换成字符串,32位 
        string strResult = BitConverter.ToString(bytResult); 
        //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉 
      strResult = strResult.Replace("-", ""); 
        return strResult; 
    } 
   /// <summary> 
    /// 方法二:通过调用特定加密算法的抽象类上的 Create 方法,创建实现特定加密算法的对象。 
    /// </summary> 
    /// <param name="strSource">需要加密的明文</param> 
    /// <returns>返回32位加密结果</returns> 
    public string Get_SHA_Method2(string strSource) 
    { 
        string strResult = ""; 
        //Create 
        System.Security.Cryptography.SHA1 sha = System.Security.Cryptography.SHA1.Create(); 
        //注意编码UTF8、UTF7、Unicode等的选择  
        byte[] bytResult = sha.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource)); 
        //字节类型的数组转换为字符串 
        for (int i = 0; i < bytResult.Length; i++) 
        { 
            //16进制转换  
            strResult = strResult + bytResult[i].ToString("X"); 
        } 
        return strResult; 
    } 
     
    /// <summary> 
    /// 方法三:直接使用HashPasswordForStoringInConfigFile生成 
    /// </summary> 
    /// <param name="strSource">需要加密的明文</param> 
    /// <returns>返回32位加密结果</returns> 
    public string Get_SHA_Method3(string strSource) 
    { 
        return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "SHA1"); 
    } 






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位的信息摘要.

MD5 算法的哈希值大小为 128 位。是一种不可逆的算法。



    与MD5 相关:

[c-sharp] view plaincopy
System.Security.Cryptography.MD5 
System.Security.Cryptography.MD5CryptoServiceProvider() 
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "MD5") 


例子:

[c-sharp] view plaincopy
/// <summary> 
    ///方法一:通过使用 new 运算符创建对象 
     /// </summary> 
     /// <param name="strSource">需要加密的明文</param> 
     /// <returns>返回16位加密结果,该结果取32位加密结果的第9位到25位</returns> 
    public string Get_MD5_Method1(string strSource) 
     { 
          //new 
        System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); 
        //获取密文字节数组 
        byte[] bytResult = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strSource)); 
        //转换成字符串,并取9到25位 
        string strResult = BitConverter.ToString(bytResult, 4,
        //转换成字符串,32位 
        //string strResult = BitConverter.ToString(bytResult); 
        //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉 
        strResult = strResult.Replace("-", ""); 
         return strResult; 
    } 
        ///<summary> 
        ///方法二:通过调用特定加密算法的抽象类上的Create 方法,创建实现特定加密算法的对象。 
        ///</summary> 
        ///<param name="strSource">需要加密的明文</param> 
        ///<returns>返回位加密结果</returns> 
        public string Get_MD5_Method2(string strSource) 
        { 
            string strResult = ""; 
            //Create 
            System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create(); 
            //注意编码UTF8、UTF7、Unicode等的选择  
            byte[] bytResult = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource)); 
            //字节类型的数组转换为字符串 
            for (int i = 0; i < bytResult.Length; i++) 
            {  
                //16进制转换 
                strResult = strResult + bytResult[i].ToString("X");  //只有对数字加密时会缺少位数 
                strResult = strResult + bytResult[i].ToString("X2"); //这样可以解决  
               strResult = strResult + bytResult[i].ToString("X").PadLeft(2,'0'); //这种方法也可以解决 PadLeft的意思是在字符串的左边添加空格,使字符串达到指定的长度。PadRight是在字符串的右侧加空格。 
            } 
            return strResult; 
        } 
        ///<summary> 
        ///方法三:直接使用HashPasswordForStoringInConfigFile生成 
        ///</summary> 
        ///<param name="strSource">需要加密的明文</param> 
        ///<returns>返回位加密结果</returns> 
        public string Get_MD5_Method3(string strSource) 
        { 
            return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "MD5"); 
        } 


分享到:
评论

相关推荐

    sha1-md5 加解密代码

    sha1-md5 加密源代码 ,可以直接加入用

    SHA1_MD5.rar

    SHA1与MD5加密的代码封装,有需要下载。

    SHA1_MD5 校对工具

    SHA1_MD5 校对工具SHA1_MD5 校对工SHA1_MD5 校对工具具

    js实现SHA1和MD5加密

    在JavaScript中实现SHA1、MD5加密,可用于网站开发和其他软件开发,尤其是在互联网安全,对用户密码等身份信息加密。

    详解Java中实现SHA1与MD5加密算法的基本方法

    主要介绍了详解Java中实现SHA1与MD5加密算法的基本方法,安全哈希算法第一版和消息摘要算法第五版也是通常人们最常用的加密算法,需要的朋友可以参考下

    MD5 SHA1 SHA256 的C语言源码

    MD5/SHA1/SHA256 纯C语言源码.支持增量计算. 包括测试程序与官方文档. 该代码我已按纯C语言基于接口编程方式封装,可以直接调用.有问题请联系我.

    md5+sha1摘要校验工具

    获取文件md5和sha1摘要值的工具,通过cmd命令操作获取,可以用来校验文件是否发生改变。

    计算 md5 sha1

    一个计算md5 sha1免费小程序,操作方便,只需鼠标拉动文件,计算值自动保存在当前目录下的MD5 SHA1.TXT 文件中,它还可计算目录下的所有文件的md5 sha1一个值,所以也可以比较二个目录是否完全相同。 此程序有自检...

    md5+sha1 js文件.zip

    平时用的md5+sha1加密的js文件,用法: &lt;script type="text/javascript" src="js/md5.js"&gt; &lt;script type="text/javascript" src="js/sha1.js"&gt; var hash = hex_md5(name+" "+password); var date = new Date();//...

    iOS swift 写的HMAC_SHA1和MD5加密

    swift写的HMAC_SHA1和MD5加密扩展类,其中HMAC_SHA1扩展方法除了SHA1,还可以使用其它算法比如SHA1,SHA224等

    SHA1码MD5码校验器

    可以用来校验下载文件的SHA1码与MD5码,非常实用的一个小工具,希望大家喜欢。

    SHA1或MD5算法获取文件摘要值(JAVA)

    SHA1或MD5算法获取文件摘要值(JAVA)

    微软官方md5/sha1校验工具

    通过命令行方式生成或校验文件的md5或sha1。部分网友反应windows 7下不可用。通过命令行方式生成或校验文件的md5或sha1。部分网友反应windows 7下不可用。通过命令行方式生成或校验文件的md5或sha1。部分网友反应...

    签名生成工具(SHA1和MD5)

    安装包签名生成工具,一键获取安装包的SHA1签名和MD5签名,可以应用于微信开放平台,百度开放平台等,一键复制粘贴,方便快捷,比微信平台的签名工具更好用!

    SHA1,MD5

    放血了自己写代码都使用这个制作随机字符串等等再配合MD5就异常强大了。。。也就是说生成的字符序列不随机,所以我们需要把srand((unsigned)time(NULL)); 从for循环中移出放在for语句前面,这样可以生成随机的字符...

    基于md5和sha1的以批处理方式实现的目录比较工具

    2:sha1 和 md5 的计算由 md5sum.exe 和 sha1sum.exe 完成,libiconv2.dll 和 libintl3.dll 是两个可执行文件需要的动态库; 3:sha1comv3.bat 和 md5comv3.bat 运行时会产生大量临时文件,这些文件由工具自动维护,...

    编程实现SHA1/MD5杂凑密码算法,sha1程序

    杂凑密码程序实现(SHA1,MD5) 编程实现SHA1/MD5杂凑密码算法,理解杂凑密码算法的加解密流程

    Hash函数MD5与SHA-1算法实现

    md5和sha-1算法代码及验证文件 在vc6.0调试运行无误,

    MD5和SHA1校验码验证器

    MD5和SHA1校验码验证器 用于验证软件的MD5和SHA1值是否正确。

    MD5 SHA1值校验工具

    MD5 SHA1值校验工具

Global site tag (gtag.js) - Google Analytics