最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android數(shù)據(jù)加密之SHA安全散列算法

 更新時(shí)間:2016年09月23日 08:41:23   作者:總李寫代碼  
這篇文章主要為大家詳細(xì)介紹了Android數(shù)據(jù)加密之SHA安全散列算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言:

對(duì)于SHA安全散列算法,以前沒(méi)怎么使用過(guò),僅僅是停留在聽(tīng)說(shuō)過(guò)的階段,今天在看圖片緩存框架Glide源碼時(shí)發(fā)現(xiàn)其緩存的Key采用的不是MD5加密算法,而是SHA-256加密算法,這才勾起了我的好奇心,所以趁著晚上沒(méi)啥事,來(lái)學(xué)習(xí)一下。

其他幾種加密方式:

 •Android數(shù)據(jù)加密之Rsa加密
 •Android數(shù)據(jù)加密之Aes加密
 •Android數(shù)據(jù)加密之Des加密
 •Android數(shù)據(jù)加密之MD5加密
 •Android數(shù)據(jù)加密之Base64編碼算法

SHA加密算法 

    SHA(Secure Hash Algorithm,安全散列算法),數(shù)字簽名等密碼學(xué)應(yīng)用中重要的工具,被廣泛地應(yīng)用于電子商務(wù)等信息安全領(lǐng)域。和MD5加密算法一樣,也是一種不可逆的加密算法,不過(guò)也可以通過(guò)窮舉法破解,但是SHA的破譯難度與成本要高于MD5,相對(duì)于MD5更加安全,現(xiàn)在已成為公認(rèn)的最安全的散列算法之一,并被廣泛使用。主要包括SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512這幾種單向散列算法。SHA-1,SHA-224和SHA-256適用于長(zhǎng)度不超過(guò)2^64二進(jìn)制位的消息。SHA-384和SHA-512適用于長(zhǎng)度不超過(guò)2^128二進(jìn)制位的消息。官方解說(shuō)如下:

 •由消息摘要反推原輸入消息,從計(jì)算理論上來(lái)說(shuō)是很困難的。
 •想要找到兩組不同的消息對(duì)應(yīng)到相同的消息摘要,從計(jì)算理論上來(lái)說(shuō)也是很困難的。任何對(duì)輸入消息的變動(dòng),都有很高的機(jī)率導(dǎo)致其產(chǎn)生的消息摘要迥異。 

SHA加密原理

     SHA-1是一種數(shù)據(jù)加密算法,該算法的思想是接收一段明文,然后以一種不可逆的方式將它轉(zhuǎn)換成一段(通常更?。┟芪模部梢院?jiǎn)單的理解為取一串輸入碼(稱為預(yù)映射或信息),并把它們轉(zhuǎn)化為長(zhǎng)度較短、位數(shù)固定的輸出序列即散列值(也稱為信息摘要或信息認(rèn)證代碼)的過(guò)程。 

     單向散列函數(shù)的安全性在于其產(chǎn)生散列值的操作過(guò)程具有較強(qiáng)的單向性。如果在輸入序列中嵌入密碼,那么任何人在不知道密碼的情況下都不能產(chǎn)生正確的散列值,從而保證了其安全性。SHA將輸入流按照每塊512位(64個(gè)字節(jié))進(jìn)行分塊,并產(chǎn)生20個(gè)字節(jié)的被稱為信息認(rèn)證代碼或信息摘要的輸出。 

    該算法輸入報(bào)文的長(zhǎng)度不限,產(chǎn)生的輸出是一個(gè)160位的報(bào)文摘要。輸入是按512 位的分組進(jìn)行處理的。SHA-1是不可逆的、防沖突,并具有良好的雪崩效應(yīng)。 

通過(guò)散列算法可實(shí)現(xiàn)數(shù)字簽名實(shí)現(xiàn),數(shù)字簽名的原理是將要傳送的明文通過(guò)一種函數(shù)運(yùn)算(Hash)轉(zhuǎn)換成報(bào)文摘要(不同的明文對(duì)應(yīng)不同的報(bào)文摘要),報(bào)文摘要加密后與明文一起傳送給接受方,接受方將接受的明文產(chǎn)生新的報(bào)文摘要與發(fā)送方的發(fā)來(lái)報(bào)文摘要解密比較,比較結(jié)果一致表示明文未被改動(dòng),如果不一致表示明文已被篡改。 

    MAC (信息認(rèn)證代碼)就是一個(gè)散列結(jié)果,其中部分輸入信息是密碼,只有知道這個(gè)密碼的參與者才能再次計(jì)算和驗(yàn)證MAC碼的合法性。 

SHA加密優(yōu)點(diǎn) 

由于SHA也是有MD4演變過(guò)來(lái)的,所以其優(yōu)點(diǎn)與MD5大致一樣
•壓縮性:任意長(zhǎng)度的數(shù)據(jù),算出的SHA值長(zhǎng)度都是固定的。
•容易計(jì)算:從原數(shù)據(jù)計(jì)算出SHA值很容易。 
•抗修改性:對(duì)原數(shù)據(jù)進(jìn)行任何改動(dòng),哪怕只修改1個(gè)字節(jié),所得到的SHA值都有很大區(qū)別。
•強(qiáng)抗碰撞:已知原數(shù)據(jù)和其SHA值,想找到一個(gè)具有相同SHA值的數(shù)據(jù)(即偽造數(shù)據(jù))是非常困難的。 

SHA應(yīng)用場(chǎng)景 

•一致性驗(yàn)證
•數(shù)字簽名
•安全訪問(wèn)認(rèn)證 

SHA加密的簡(jiǎn)單實(shí)現(xiàn) 

這里代碼演示以SHA-256為例。 

  public static String sha(String string) {
    if (TextUtils.isEmpty(string)) {
      return "";
    }
    MessageDigest md5 = null;
    try {
      md5 = MessageDigest.getInstance("sha-256");
      byte[] bytes = md5.digest((string ).getBytes());
      String result = "";
      for (byte b : bytes) {
        String temp = Integer.toHexString(b & 0xff);
        if (temp.length() == 1) {
          temp = "0" + temp;
        }
        result += temp;
      }
      return result;
    } catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
    }
    return "";
  }

SHA安全性探討 

•SHA-1在許多安全協(xié)議中廣為使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被視為是MD5(更早之前被廣為使用的散列函數(shù))的后繼者。2005年,密碼學(xué)家就證明SHA-1的破解速度比預(yù)期提高了2000倍,雖然破解仍然是極其困難和昂貴的,但隨著計(jì)算機(jī)變得越來(lái)越快和越來(lái)越廉價(jià),SHA-1算法的安全性也逐年降低,已被密碼學(xué)家嚴(yán)重質(zhì)疑,希望由安全強(qiáng)度更高的SHA-2替代它。 

•SHA-224、SHA-256、SHA-384,和SHA-512并稱為SHA-2。 

•新的散列函數(shù)并沒(méi)有接受像SHA-1一樣的公眾密碼社區(qū)做詳細(xì)的檢驗(yàn),所以它們的密碼安全性還不被大家廣泛的信任。 

•雖然至今尚未出現(xiàn)對(duì)SHA-2有效的攻擊,它的算法跟SHA-1基本上仍然相似;因此有些人開(kāi)始發(fā)展其他替代的散列算法。 

跨國(guó)公司事跡:
 
  Google官方博客宣布,將在Chrome瀏覽器中逐漸降低SHA-1證書的安全指示。但有意思的是Google.com目前使用的也是SHA-1簽名的證書,但證書將在3個(gè)月內(nèi)過(guò)期,Google將從2015年起使用SHA-2簽名的證書。SHA-1算法目前尚未發(fā)現(xiàn)嚴(yán)重的弱點(diǎn),但偽造證書所需費(fèi)用正越來(lái)越低。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

清徐县| 吴旗县| 连云港市| 杭锦旗| 南召县| 吴堡县| 从江县| 蛟河市| 大关县| 贵阳市| 长沙县| 永年县| 延津县| 横山县| 华宁县| 鄂伦春自治旗| 肇庆市| 房山区| 马鞍山市| 凯里市| 白玉县| 隆安县| 澳门| 日喀则市| 防城港市| 顺义区| 志丹县| 十堰市| 名山县| 弥勒县| 仪征市| 方山县| 布尔津县| 图们市| 东乌珠穆沁旗| 卢湾区| 诏安县| 黄陵县| 安丘市| 藁城市| 射阳县|