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

首頁 > 系統 > Android > 正文

Android 安全加密:消息摘要Message Digest詳解

2019-12-12 05:17:13
字體:
來源:轉載
供稿:網友

Android安全加密專題文章索引

以上學習所有內容,對稱加密、非對稱加密、消息摘要、數字簽名等知識都是為了理解數字證書工作原理而作為一個預備知識。數字證書是密碼學里的終極武器,是人類幾千年歷史總結的智慧的結晶,只有在明白了數字證書工作原理后,才能理解Https 協議的安全通訊機制。最終才能在SSL 開發過程中得心應手。

另外,對稱加密和消息摘要這兩個知識點是可以單獨拿來使用的。

知識點串聯:

數字證書使用到了以上學習的所有知識

  1. 對稱加密與非對稱加密結合使用實現了秘鑰交換,之后通信雙方使用該秘鑰進行對稱加密通信。
  2. 消息摘要與非對稱加密實現了數字簽名,根證書機構對目標證書進行簽名,在校驗的時候,根證書用公鑰對其進行校驗。若校驗成功,則說明該證書是受信任的。
  3. Keytool 工具可以創建證書,之后交給根證書機構認證后直接使用自簽名證書,還可以輸出證書的RFC格式信息等。
  4. 數字簽名技術實現了身份認證與數據完整性保證。
  5. 加密技術保證了數據的保密性,消息摘要算法保證了數據的完整性,對稱加密的高效保證了數據處理的可靠性,數字簽名技術保證了操作的不可否認性。

通過以上內容的學習,我們要能掌握以下知識點:

  1. 基礎知識:bit 位、字節、字符、字符編碼、進制轉換、io
  2. 知道怎樣在實際開發里怎樣使用對稱加密解決問題
  3. 知道對稱加密、非對稱加密、消息摘要、數字簽名、數字證書是為了解決什么問題而出現的
  4. 了解SSL 通訊流程
  5. 實際開發里怎樣請求Https 的接口

1. 常見算法

MD5、SHA、CRC 等

2. 使用場景

  1. 對用戶密碼進行md5 加密后保存到數據庫里
  2. 軟件下載站使用消息摘要計算文件指紋,防止被篡改
  3. 數字簽名(后面知識點)
  4. 百度云,360網盤等云盤的妙傳功能用的就是sha1值
  5. Eclipse和Android Studio開發工具根據sha1值來判斷v4,v7包是否沖突
  6. 據說銀行的密碼使用的就是MD5加密(因為MD5具有不可逆性)

例如軟件下載站數據指紋:http://dev.mysql.com/downloads/installer/

3. 使用步驟

//常用算法:MD5、SHA、CRCMessageDigest digest = MessageDigest.getInstance("MD5");byte[] result = digest.digest(content.getBytes());//消息摘要的結果一般都是轉換成16 進制字符串形式展示String hex = Hex.encode(result);//MD5 結果為16 字節(128 個比特位)、轉換為16 進制表示后長度是32 個字符//SHA 結果為20 字節(160 個比特位)、轉換為16 進制表示后長度是40 個字符System.out.println(hex);

消息摘要后的結果是固定長度,無論你的數據有多大,哪怕是只有一個字節或者是一個G 的文件,摘要后的結果都是固定長度。

經常聽到有人問這樣的問題,MD5 摘要后結果到底是多少位?有的人說是16 位,有的說是128 位,有的說是32 位。到底是多長,這個時候我們就要明白,16 位指的是字節位數,128 位指的是比特位,32 位指的結果轉換成16 進制展示的字符位數。

4. 數字摘要原理

//獲取實例MessageDigest digest = MessageDigest.getInstance("MD5");digest.update(key.getBytes());byte[] bytes = digest.digest(key.getBytes());StringBuilder sb = new StringBuilder();for (int i = 0; i < bytes.length; i++) { String hex = Integer.toHexString(bytes[i]&0xff); if (hex.length() == 1){ sb.append("0"); } sb.append(hex);}String hexstring = sb.toString(); 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 班玛县| 长治县| 揭阳市| 安阳市| 聊城市| 虹口区| 龙岩市| 香格里拉县| 盐津县| 凉山| 化德县| 仁布县| 贵阳市| 扎鲁特旗| 文水县| 长阳| 南宫市| 青铜峡市| 凤城市| 申扎县| 锡林浩特市| 且末县| 牙克石市| 措美县| 石景山区| 临沧市| 仁布县| 嘉善县| 盐津县| 塔城市| 额尔古纳市| 平舆县| 六枝特区| 玉龙| 临夏市| 潮安县| 广德县| 玛多县| 北宁市| 当阳市| 同仁县|