Android安全加密:訊息摘要Message Digest
Android安全加密專題文章索引
- Android安全加密:對稱加密
- Android安全加密:非對稱加密
- Android安全加密:訊息摘要Message Digest
- Android安全加密:數字簽名和數字證照
- Android安全加密:Https程式設計
以上學習所有內容,對稱加密、非對稱加密、訊息摘要、數字簽名等知識都是為了理解數字證照工作原理而作為一個預備知識。數字證照是密碼學裡的終極武器,是人類幾千年歷史總結的智慧的結晶,只有在明白了數字證照工作原理後,才能理解Https 協議的安全通訊機制。最終才能在SSL 開發過程中得心應手。
另外,對稱加密和訊息摘要這兩個知識點是可以單獨拿來使用的。
知識點串聯:
數字證照使用到了以上學習的所有知識
- 對稱加密與非對稱加密結合使用實現了祕鑰交換,之後通訊雙方使用該祕鑰進行對稱加密通訊。
- 訊息摘要與非對稱加密實現了數字簽名,根證照機構對目標證照進行簽名,在校驗的時候,根證照用公鑰對其進行校驗。若校驗成功,則說明該證照是受信任的。
- Keytool 工具可以建立證照,之後交給根證照機構認證後直接使用自簽名證照,還可以輸出證照的RFC格式資訊等。
- 數字簽名技術實現了身份認證與資料完整性保證。
- 加密技術保證了資料的保密性,訊息摘要演算法保證了資料的完整性,對稱加密的高效保證了資料處理的可靠性,數字簽名技術保證了操作的不可否認性。
通過以上內容的學習,我們要能掌握以下知識點:
- 基礎知識:bit 位、位元組、字元、字元編碼、進位制轉換、io
- 知道怎樣在實際開發裡怎樣使用對稱加密解決問題
- 知道對稱加密、非對稱加密、訊息摘要、數字簽名、數字證照是為了解決什麼問題而出現的
- 瞭解SSL 通訊流程
- 實際開發裡怎樣請求Https 的介面
1. 常見演算法
MD5、SHA、CRC 等
2. 使用場景
- 對使用者密碼進行md5 加密後儲存到資料庫裡
- 軟體下載站使用訊息摘要計算檔案指紋,防止被篡改
- 數字簽名(後面知識點)
- 百度雲,360網盤等雲盤的妙傳功能用的就是sha1值
- Eclipse和Android Studio開發工具根據sha1值來判斷v4,v7包是否衝突
- 據說銀行的密碼使用的就是MD5加密(因為MD5具有不可逆性)
例如軟體下載站資料指紋:http://dev.mysql.com/downloads/installer/
3. 使用步驟
//常用演算法:MD5、SHA、CRC MessageDigest 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();
相關文章
- Android 安全加密:訊息摘要Message DigestAndroid加密
- Java安全——訊息摘要Java
- Android訊息機制Message訊息池Android
- Android 訊息處理機制:Handler|MessageAndroid
- Digest Auth 摘要認證
- Android訊息處理機制(Handler、Looper、MessageQueue與Message)AndroidOOP
- MQTT 遺囑訊息(Will Message)的使用MQQT
- unity 3種message訊息管理使用Unity
- weblogic jms訊息狀態messageWeb
- MD5訊息摘要演算法演算法
- HTTP認證之摘要認證——Digest(一)HTTP
- 訊息佇列(Message Queue)基本概念佇列
- ActiveMQ 中的訊息遊標(Message cursors)MQ
- 對稱加密、非對稱加密、RSA、訊息摘要、數字簽名、數字證書與HTTPS簡介加密HTTP
- 密碼學基礎:編碼方式、訊息摘要演算法、加密演算法總結密碼學演算法加密
- https安全性 帶給im 訊息加密的啟發HTTP加密
- Android 安全加密:對稱加密Android加密
- Android安全加密:對稱加密Android加密
- 深入理解MD5:Message Digest Algorithm 5Go
- RocketMQ的事務訊息處理【half-message】MQ
- Android 安全加密:非對稱加密Android加密
- Android安全加密:非對稱加密Android加密
- WCF分散式安全開發實踐(11):訊息安全模式之Certificate身份驗證:Message_Certificate_WSHttpBinding分散式模式HTTP
- WebSphere Message Broker 中使用者出口跟蹤訊息Web
- 密碼學系列——訊息摘要(c#程式碼實操)密碼學C#
- Android訊息傳遞之Handler訊息機制Android
- 訊息資料庫Message DB:PostgreSQL的事件儲存和訊息儲存 - Eventide Blog資料庫SQL事件IDE
- WCF分散式安全開發實踐(9):訊息安全模式之Windows身份驗證:Message_Windows_NetTcpBinding分散式模式WindowsTCP
- Android訊息迴圈Android
- 如果讓你來設計訊息加密加密
- Android訊息傳遞之元件間傳遞訊息Android元件
- RocketMQ原始碼解析之訊息消費者(consume Message)MQ原始碼
- android之 Android訊息機制Android
- 編碼、摘要和加密(三)——資料加密加密
- android訊息機制—HandlerAndroid
- 理解 Android 訊息機制Android
- Android訊息機制HandlerAndroid
- Android之訊息推送原理Android