<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          你怕是對(duì)MD5算法有誤解

          共 1762字,需瀏覽 4分鐘

           ·

          2021-06-13 01:23

          大家常聽(tīng)到“MD5加密”、“對(duì)稱(chēng)加密”、“非對(duì)稱(chēng)加密”,那么MD5屬于哪種加密算法?
          面試官問(wèn)這樣的問(wèn)題,準(zhǔn)是在給你挖坑。

          "MD5加密"純屬口嗨,MD5不是加密算法,是摘要算法。

          今天小碼甲帶大家梳理加密算法、摘要算法的定義和場(chǎng)景:

          29c08668cae3bc0e8303ab0dc23ae27f.webp

          伸手黨先看答案:

          加密算法的目的,在于使別人無(wú)法成功查看加密的數(shù)據(jù),并且在需要的時(shí)候還可以對(duì)數(shù)據(jù)進(jìn)行解密來(lái)重新查看數(shù)據(jù)。

          而MD5算法是一種哈希算法,哈希算法的設(shè)計(jì)目的本身就決定了,它在大多數(shù)情況下都是不可逆的,即你通過(guò)哈希算法得到的數(shù)據(jù),無(wú)法經(jīng)過(guò)任何算法還原回去。所以既然不能將數(shù)據(jù)還原,也就不能稱(chēng)之為解密;既然不能解密,那么哈希的過(guò)程自然也就不能稱(chēng)作是[加密]了。

          加密算法

          加密:是以某種特殊的算法改變?cè)械男畔ⅲ沟梦词跈?quán)的用戶(hù)即使獲得已加密的信息,但因不知解密的方法,仍然無(wú)法了解信息的內(nèi)容。

          解密:加密的逆過(guò)程為解密,即將該加密信息轉(zhuǎn)化為其原來(lái)信息的過(guò)程。

          加密算法分為對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密,其中對(duì)稱(chēng)加密算法的加解密密鑰相同,非對(duì)稱(chēng)加解密的密鑰不同。

          9601f001e92e1790d5789af6794da92b.webp

          HTTPS就同時(shí)用到非對(duì)稱(chēng)加密和對(duì)稱(chēng)加密,在連接建立階段,使用非對(duì)稱(chēng)加解密(保護(hù)密鑰不被查看), 在通信階段使用對(duì)稱(chēng)密鑰加解密數(shù)據(jù)。

          6a69260fd3083c593efaad12b76f8a31.webp

          摘要算法

          摘要算法,又稱(chēng)哈希算法、散列算法。通過(guò)一個(gè)函數(shù),將任意長(zhǎng)度的內(nèi)容轉(zhuǎn)換為一個(gè)固定長(zhǎng)度的數(shù)據(jù)串。

          ce86302c16c4a95ac8bcbe57d2ab5b69.webp

          摘要算法之所以能指出數(shù)據(jù)是否被篡改,就是因?yàn)檎瘮?shù)是一個(gè)單向函數(shù),計(jì)算很容易,但通過(guò)摘要(digest) 反推data卻非常困難,而且,對(duì)于原始數(shù)據(jù)做一個(gè)bit的修改,都會(huì)導(dǎo)致計(jì)算出的摘要完全不同。

          使用迅雷下載某片的時(shí)候,下載站會(huì)順帶給你一個(gè)MD5校驗(yàn)碼;
          你找一個(gè)MD5校驗(yàn)工具,對(duì)下載下來(lái)的文件執(zhí)行MD5算法,將得到的哈希值與下載站附帶的MD5值對(duì)比,如果值是相同的,說(shuō)明從該網(wǎng)站下載的文件沒(méi)有損壞。

          HMAC

          延伸聊一個(gè)結(jié)合了密鑰和哈希功能的請(qǐng)求認(rèn)證方案:
          HMAC ( hash-based message authenticated code)

          很多第三方平臺(tái)都采用這種授權(quán)認(rèn)證方案,你回想一下,api平臺(tái)是不是經(jīng)常給你一對(duì)AppID?Serect Key

          1.Client & Server 都知曉一個(gè)私鑰serect key2.客戶(hù)端每次請(qǐng)求時(shí),會(huì)針對(duì)(請(qǐng)求數(shù)據(jù)+ secret key)生成一個(gè)hash值
          HMAC = hashFunc(secret key + message)
          3.客戶(hù)端將哈希值做為請(qǐng)求的一部分,一起發(fā)送4.當(dāng)服務(wù)端收到請(qǐng)求, 對(duì)( 收到的請(qǐng)求+ 查到的Serectkey')生成哈希,將計(jì)算的哈希值與請(qǐng)求中附帶的原哈希值對(duì)比,如果相同,則認(rèn)定請(qǐng)求來(lái)自受信Client,且請(qǐng)求未被篡改。

          為什么會(huì)有這樣的效果?

          首先:Client 和Server的哈希值相同,根據(jù)哈希算法的設(shè)計(jì)初衷,說(shuō)明請(qǐng)求過(guò)程未被篡改;

          另一方面也反推?Client 和Server使用的是同一個(gè)Serect Key?, 而Serect Key是私密信息,故此處的Client發(fā)送請(qǐng)求不可抵賴(lài)。

          還可以考慮在客戶(hù)端生成哈希時(shí)加入timestamp時(shí)間戳(請(qǐng)求也要附帶這個(gè)時(shí)間戳),服務(wù)端收到后,先對(duì)比服務(wù)器時(shí)間戳與請(qǐng)求時(shí)間戳,限制15s內(nèi)為有效請(qǐng)求,服務(wù)端再對(duì)(請(qǐng)求消息+ serect key+ timestamp)生成哈希,對(duì)比哈希,避免重放攻擊

          總結(jié)

          本文給出的示例:HTTPS、迅雷MD5校驗(yàn),足夠幫助你了解加密算法和摘要算法的設(shè)計(jì)目的。

          ?加密算法的目的是:防止信息被偷看?摘要算法的目的是:防止信息被篡改

          以后使用時(shí)候也能有的放矢,面試時(shí)也不會(huì)鬧出笑話(huà)。

          最后給出的WebAPI授權(quán)方案HMAC,算是密鑰+哈希算法結(jié)合的一個(gè)應(yīng)用場(chǎng)景, 具備快速、自簽名的特點(diǎn)。

          本號(hào)內(nèi)容極其硬核,閱讀和關(guān)注不是目的,更希望得到的是閱讀反饋,互相促進(jìn)認(rèn)知的提升(相當(dāng)真誠(chéng)??)

          # 更多精彩

          今天因?yàn)槟愕狞c(diǎn)贊,讓我元?dú)鉂M(mǎn)滿(mǎn)!0ec8b402b06812f7e2a1e703ce3327c5.webp
          瀏覽 63
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  99精品视频免费观看, | 亚洲一级毛片 | 五月丁香夫妻自拍偷拍 | 九九九网站 | 青青草激情在线视频 |