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

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

 更新時(shí)間:2016年09月13日 10:08:39   作者:Android-Developer  
本文主要介紹Android安全加密消息摘要Message Digest,這里整理了詳細(xì)的資料,并說(shuō)明如何使用Message Digest 和使用注意事項(xiàng),有需要的小伙伴可以參考下

Android安全加密專題文章索引

以上學(xué)習(xí)所有內(nèi)容,對(duì)稱加密、非對(duì)稱加密、消息摘要、數(shù)字簽名等知識(shí)都是為了理解數(shù)字證書(shū)工作原理而作為一個(gè)預(yù)備知識(shí)。數(shù)字證書(shū)是密碼學(xué)里的終極武器,是人類幾千年歷史總結(jié)的智慧的結(jié)晶,只有在明白了數(shù)字證書(shū)工作原理后,才能理解Https 協(xié)議的安全通訊機(jī)制。最終才能在SSL 開(kāi)發(fā)過(guò)程中得心應(yīng)手。

另外,對(duì)稱加密和消息摘要這兩個(gè)知識(shí)點(diǎn)是可以單獨(dú)拿來(lái)使用的。

知識(shí)點(diǎn)串聯(lián):

數(shù)字證書(shū)使用到了以上學(xué)習(xí)的所有知識(shí)

  1. 對(duì)稱加密與非對(duì)稱加密結(jié)合使用實(shí)現(xiàn)了秘鑰交換,之后通信雙方使用該秘鑰進(jìn)行對(duì)稱加密通信。
  2. 消息摘要與非對(duì)稱加密實(shí)現(xiàn)了數(shù)字簽名,根證書(shū)機(jī)構(gòu)對(duì)目標(biāo)證書(shū)進(jìn)行簽名,在校驗(yàn)的時(shí)候,根證書(shū)用公鑰對(duì)其進(jìn)行校驗(yàn)。若校驗(yàn)成功,則說(shuō)明該證書(shū)是受信任的。
  3. Keytool 工具可以創(chuàng)建證書(shū),之后交給根證書(shū)機(jī)構(gòu)認(rèn)證后直接使用自簽名證書(shū),還可以輸出證書(shū)的RFC格式信息等。
  4. 數(shù)字簽名技術(shù)實(shí)現(xiàn)了身份認(rèn)證與數(shù)據(jù)完整性保證。
  5. 加密技術(shù)保證了數(shù)據(jù)的保密性,消息摘要算法保證了數(shù)據(jù)的完整性,對(duì)稱加密的高效保證了數(shù)據(jù)處理的可靠性,數(shù)字簽名技術(shù)保證了操作的不可否認(rèn)性。

通過(guò)以上內(nèi)容的學(xué)習(xí),我們要能掌握以下知識(shí)點(diǎn):

  1. 基礎(chǔ)知識(shí):bit 位、字節(jié)、字符、字符編碼、進(jìn)制轉(zhuǎn)換、io
  2. 知道怎樣在實(shí)際開(kāi)發(fā)里怎樣使用對(duì)稱加密解決問(wèn)題
  3. 知道對(duì)稱加密、非對(duì)稱加密、消息摘要、數(shù)字簽名、數(shù)字證書(shū)是為了解決什么問(wèn)題而出現(xiàn)的
  4. 了解SSL 通訊流程
  5. 實(shí)際開(kāi)發(fā)里怎樣請(qǐng)求Https 的接口

1. 常見(jiàn)算法

MD5、SHA、CRC 等

2. 使用場(chǎng)景

  1. 對(duì)用戶密碼進(jìn)行md5 加密后保存到數(shù)據(jù)庫(kù)里
  2. 軟件下載站使用消息摘要計(jì)算文件指紋,防止被篡改
  3. 數(shù)字簽名(后面知識(shí)點(diǎn))
  4. 百度云,360網(wǎng)盤等云盤的妙傳功能用的就是sha1值
  5. Eclipse和Android Studio開(kāi)發(fā)工具根據(jù)sha1值來(lái)判斷v4,v7包是否沖突
  6. 據(jù)說(shuō)銀行的密碼使用的就是MD5加密(因?yàn)镸D5具有不可逆性)

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

3. 使用步驟

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

消息摘要后的結(jié)果是固定長(zhǎng)度,無(wú)論你的數(shù)據(jù)有多大,哪怕是只有一個(gè)字節(jié)或者是一個(gè)G 的文件,摘要后的結(jié)果都是固定長(zhǎng)度。

經(jīng)常聽(tīng)到有人問(wèn)這樣的問(wèn)題,MD5 摘要后結(jié)果到底是多少位?有的人說(shuō)是16 位,有的說(shuō)是128 位,有的說(shuō)是32 位。到底是多長(zhǎng),這個(gè)時(shí)候我們就要明白,16 位指的是字節(jié)位數(shù),128 位指的是比特位,32 位指的結(jié)果轉(zhuǎn)換成16 進(jìn)制展示的字符位數(shù)。

4. 數(shù)字摘要原理

//獲取實(shí)例
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();

 

相關(guān)文章

  • flutter局部刷新的實(shí)現(xiàn)示例

    flutter局部刷新的實(shí)現(xiàn)示例

    這篇文章主要介紹了flutter局部刷新的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Android開(kāi)發(fā)RecyclerView單獨(dú)刷新使用技巧

    Android開(kāi)發(fā)RecyclerView單獨(dú)刷新使用技巧

    本篇文章主要是分享下RecyclerView中子item如何單獨(dú)刷新以及子item的某一部分內(nèi)容如何實(shí)現(xiàn)單獨(dú)刷新,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Android拍照或從圖庫(kù)選擇圖片并裁剪

    Android拍照或從圖庫(kù)選擇圖片并裁剪

    這篇文章主要介紹了Android拍照或從圖庫(kù)選擇圖片并裁剪的相關(guān)資料,具有一定的參考價(jià)值,需要的朋友可以參考下
    2016-08-08
  • Android原生視頻播放VideoView的使用

    Android原生視頻播放VideoView的使用

    這篇文章主要為大家詳細(xì)介紹了Android原生視頻播放VideoView的使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • 揭秘Android視圖繪制的流程步驟

    揭秘Android視圖繪制的流程步驟

    在Android的UI中,View是至關(guān)重要的一個(gè)組件,它是用戶界面的基本構(gòu)建塊,在View的繪制過(guò)程中,涉及到很多重要的概念和技術(shù),本文將詳細(xì)介紹Android?View的繪制過(guò)程,讓你能夠更好地理解和掌握Android的UI開(kāi)發(fā),需要的朋友可以參考下
    2023-06-06
  • Android使用Notification實(shí)現(xiàn)通知功能

    Android使用Notification實(shí)現(xiàn)通知功能

    這篇文章主要為大家詳細(xì)介紹了Android使用Notification實(shí)現(xiàn)通知功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • TabLayout+ViewPager2的簡(jiǎn)單使用詳解

    TabLayout+ViewPager2的簡(jiǎn)單使用詳解

    這篇文章主要為大家詳細(xì)介紹了TabLayout+ViewPager2的簡(jiǎn)單使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Android自定義View制作動(dòng)態(tài)炫酷按鈕實(shí)例解析

    Android自定義View制作動(dòng)態(tài)炫酷按鈕實(shí)例解析

    這篇文章主要為大家詳細(xì)解析了Android自定義View制作動(dòng)態(tài)炫酷按鈕實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Flutter多選按鈕組件Checkbox使用方法詳解

    Flutter多選按鈕組件Checkbox使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Flutter多選按鈕組件Checkbox使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • flutter 路由跳轉(zhuǎn)的實(shí)現(xiàn)示例

    flutter 路由跳轉(zhuǎn)的實(shí)現(xiàn)示例

    這篇文章主要介紹了flutter 路由跳轉(zhuǎn)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評(píng)論