`

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.rar

    描述中提到的“SHA1与MD5加密的代码封装”可能包含了编程语言(如Python、Java、C++等)实现的SHA1和MD5算法的库或者函数,这些代码可以帮助开发者快速地在自己的项目中集成这两个散列函数,进行数据校验或存储密码...

    sha1-md5 加解密代码

    SHA1和MD5是两种广泛使用的哈希函数,在IT领域,特别是网络安全和数据完整性验证方面发挥着重要作用。本文将深入探讨这两种加密算法的原理、应用以及C++实现的相关细节。 首先,MD5(Message-Digest Algorithm 5)...

    js实现SHA1和MD5加密

    在JavaScript中,可以使用`crypto-js`库来实现SHA1加密,方法与MD5类似: ```javascript var hash = CryptoJS.SHA1(message); console.log(hash.toString(CryptoJS.enc.Hex)); // 输出加密后的16进制字符串 ``` **...

    md5+sha1摘要校验工具

    在IT领域,数据完整性与安全性至关重要,而md5和sha1就是两种常见的校验和算法,用于验证文件是否被篡改或损坏。本工具提供了一种便捷的方式,通过CMD(命令行)操作来计算文件的md5和sha1摘要值。 MD5(Message-...

    MD5 SHA1 SHA256 的C语言源码

    MD5(Message-Digest Algorithm 5)、SHA1(Secure Hash Algorithm 1)和SHA256(Secure Hash Algorithm 2,256位版本)是常见的哈希函数,用于生成固定长度的数字指纹,常用于数据完整性校验、密码存储等领域。...

    SHA1_MD5 校对工具

    "SHA1_MD5 校对工具"是一款专门用来比较文件的SHA1和MD5哈希值的软件,它可以帮助用户确认文件是否与原始版本保持一致。例如,在软件分发时,开发者会提供一个文件的SHA1或MD5哈希值,用户可以使用这类工具计算下载...

    iOS swift 写的HMAC_SHA1和MD5加密

    本话题主要关注的是使用Swift实现的HMAC(Hash-based Message Authentication Code)_SHA1和MD5加密算法。 首先,HMAC是一种基于哈希函数的消息认证码,它结合了密钥和消息,生成一个固定长度的摘要,用于验证数据...

    签名生成工具(SHA1和MD5)

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

    SHA1码MD5码校验器

    "SHA1码MD5码校验器"是一款实用工具,它可以帮助用户快速计算文件的SHA1和MD5值,并与预知的哈希值进行比较,从而确认文件是否在传输过程中被篡改。这对于软件开发者、系统管理员和普通用户来说都非常有用,尤其是在...

    计算 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();//...

    SHA1,MD5,SHA256 checker

    用户只需运行这个程序,选择需要校验的ISO文件,工具会自动计算并显示对应的SHA1、MD5和SHA256哈希值,然后用户可以与官方提供的校验值进行比较。 总结来说,这个工具主要用于文件完整性检查,特别是对于ISO镜像...

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

    与MD5相比,SHA-1的安全性更高,但自2011年起,也已知存在构造碰撞的方法。尽管如此,SHA-1至今仍被一些系统使用,但在新设计的系统中已被更安全的SHA-2或SHA-3家族取代。 在VC++环境下,实现MD5和SHA-1算法通常...

    MD5和SHA1的比较程序

    与MD5相似,SHA1也用于数据完整性检查,但由于其更长的哈希值,理论上它提供了更高的安全性。 MD5和SHA1的共同点在于,它们都是非可逆的单向函数,即给定输入后可以容易地计算出哈希值,但不能从哈希值反推出原始...

    三种哈希算法的函数: sha256 md5 sha1

    在这个主题中,我们主要关注三种哈希算法:SHA256、MD5和SHA1。这些算法都是将任意长度的数据转换为固定长度的摘要,具有单向性和抗碰撞性。 1. **MD5(Message-Digest Algorithm 5)** - **简介**:MD5由Ronald ...

    MD5 SHA1 HASH工具

    MD5和SHA1是两种广泛使用的哈希函数,它们在信息技术领域中扮演着重要的角色,尤其是在数据完整性和安全性方面。这两个术语与哈希值的概念密切相关,哈希值是通过特定算法将任意大小的数据(如文件)转换为固定长度...

    微软官方md5sum和sha1sum工具

    总的来说,微软官方的md5sum和sha1sum工具是Windows用户进行文件完整性检查的重要工具,它们可以帮助用户保证所下载的文件与原始版本一致,防止因网络传输问题或恶意攻击导致的文件损坏。通过正确使用这些工具,可以...

    MD5 SHA1校验工具Hash

    SHA1相对于MD5提供了更强的安全性,但与MD5一样,随着时间的推移,也发现了一些碰撞攻击的可能性。尽管如此,至今SHA1仍被广泛用于各种验证目的,尤其是在软件发布和更新中。 "Hash"这个文件可能是一个包含MD5和SHA...

    md5 SHA1校验工具

    与MD5类似,SHA1也常用于验证文件的完整性,但由于它的计算过程更复杂,因此被认为比MD5更为安全。然而,随着技术的发展,SHA1的安全性已经受到挑战,现在已被更安全的SHA-2或SHA-3系列算法所取代。 "MD5校验-...

Global site tag (gtag.js) - Google Analytics