国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

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

2019-12-12 05:11:14
字體:
供稿:網(wǎng)友

前言:

對于SHA安全散列算法,以前沒怎么使用過,僅僅是停留在聽說過的階段,今天在看圖片緩存框架Glide源碼時發(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)制位的消息。官方解說如下:

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

SHA加密原理

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

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

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

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

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

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

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

SHA應(yīng)用場景 

•一致性驗證
•數(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ī)變得越來越快和越來越廉價,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ì)的檢驗,所以它們的密碼安全性還不被大家廣泛的信任。 

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

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 绥德县| 文成县| 桦川县| 巍山| 阿拉善左旗| 毕节市| 天台县| 进贤县| 遂昌县| 教育| 衡阳市| 会东县| 杭锦旗| 新野县| 河北区| 三门峡市| 罗平县| 明溪县| 海兴县| 清苑县| 锦屏县| 太康县| 侯马市| 错那县| 甘洛县| 毕节市| 大英县| 金平| 三江| 湖州市| 化德县| 千阳县| 江北区| 军事| 饶河县| 阳新县| 云龙县| 长阳| 海淀区| 文安县| 泰安市|