亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言:

對于SHA安全散列算法,以前沒怎么使用過,僅僅是停留在聽說過的階段,今天在看圖片緩存框架Glide源碼時(shí)發(fā)現(xiàn)其緩存的Key采用的不是MD5加密算法,而是SHA-256加密算法,這才勾起了我的好奇心,所以趁著晚上沒啥事,來學(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加密算法一樣,也是一種不可逆的加密算法,不過也可以通過窮舉法破解,但是SHA的破譯難度與成本要高于MD5,相對于MD5更加安全,現(xiàn)在已成為公認(rèn)的最安全的散列算法之一,并被廣泛使用。主要包括SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512這幾種單向散列算法。SHA-1,SHA-224和SHA-256適用于長度不超過2^64二進(jìn)制位的消息。SHA-384和SHA-512適用于長度不超過2^128二進(jìn)制位的消息。官方解說如下:

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

SHA加密原理

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

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

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

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

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

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

由于SHA也是有MD4演變過來的,所以其優(yōu)點(diǎn)與MD5大致一樣
•壓縮性:任意長度的數(shù)據(jù),算出的SHA值長度都是固定的。
•容易計(jì)算:從原數(shù)據(jù)計(jì)算出SHA值很容易。 
•抗修改性:對原數(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)用場景 

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

SHA加密的簡單實(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ī)變得越來越快和越來越廉價(jià),SHA-1算法的安全性也逐年降低,已被密碼學(xué)家嚴(yán)重質(zhì)疑,希望由安全強(qiáng)度更高的SHA-2替代它。 

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

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

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

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

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

您可能感興趣的文章:

相關(guān)文章

  • Android實(shí)現(xiàn)炫酷的網(wǎng)絡(luò)直播彈幕功能

    Android實(shí)現(xiàn)炫酷的網(wǎng)絡(luò)直播彈幕功能

    這篇文章主要為大家詳細(xì)介紹了Android仿網(wǎng)絡(luò)直播彈幕功能的實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android控件FlowLikeView實(shí)現(xiàn)點(diǎn)贊動(dòng)畫

    Android控件FlowLikeView實(shí)現(xiàn)點(diǎn)贊動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了一個(gè)點(diǎn)贊動(dòng)畫的優(yōu)雅控件FlowLikeView,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android編程之通知欄的用法小結(jié)

    Android編程之通知欄的用法小結(jié)

    這篇文章主要介紹了Android編程之通知欄的用法,結(jié)合實(shí)例形式總結(jié)分析了Android通知欄的相關(guān)操作技巧,包括發(fā)送、刪除通知、自定義布局等操作實(shí)現(xiàn)方法,需要的朋友可以參考下
    2017-01-01
  • Android仿泡泡窗實(shí)現(xiàn)下拉菜單條實(shí)例代碼

    Android仿泡泡窗實(shí)現(xiàn)下拉菜單條實(shí)例代碼

    最近參與android的項(xiàng)目開發(fā),其中遇到這樣的需求:點(diǎn)擊下拉按鈕,顯示出所有的條目,有刪除和點(diǎn)擊功能,點(diǎn)擊后將條目顯示。下面通過實(shí)例代碼給大家介紹下Android仿泡泡窗實(shí)現(xiàn)下拉菜單條效果,需要的朋友參考下吧
    2017-05-05
  • Android viewpage實(shí)現(xiàn)禁止滑動(dòng)的功能

    Android viewpage實(shí)現(xiàn)禁止滑動(dòng)的功能

    這篇文章主要介紹了Android viewpage實(shí)現(xiàn)禁止滑動(dòng)的功能的相關(guān)資料,這里附有實(shí)現(xiàn)的實(shí)例代碼,主要還是重新 ViewPage 這個(gè)類,需要的朋友可以參考下
    2016-11-11
  • android studio的安裝(史上最詳細(xì))

    android studio的安裝(史上最詳細(xì))

    這篇文章主要介紹了android studio的安裝(史上最詳細(xì)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Android開發(fā)中requestfocus()無效的原因及解決辦法

    Android開發(fā)中requestfocus()無效的原因及解決辦法

    這篇文章主要介紹了Android開發(fā)中requestfocus()無效的原因及解決辦法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-08-08
  • 基于Android掃描sd卡與系統(tǒng)文件的介紹

    基于Android掃描sd卡與系統(tǒng)文件的介紹

    本篇文章是對Android掃描sd卡與系統(tǒng)文件進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • android studio集成ijkplayer的示例代碼

    android studio集成ijkplayer的示例代碼

    本篇文章主要介紹了android studio集成ijkplayer的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 簡單仿寫Android控件SlidingMenu的實(shí)例代碼

    簡單仿寫Android控件SlidingMenu的實(shí)例代碼

    下面小編就為大家分享一篇簡單仿寫Android控件SlidingMenu的實(shí)例代碼,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01

最新評論