日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

你怕是对MD5算法有误解

發(fā)布時間:2023/12/4 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 你怕是对MD5算法有误解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

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

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

伸手黨先看答案:

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

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

加密算法

加密:是以某種特殊的算法改變原有的信息,使得未授權(quán)的用戶即使獲得已加密的信息,但因不知解密的方法,仍然無法了解信息的內(nèi)容。

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

加密算法分為對稱加密和非對稱加密,其中對稱加密算法的加解密密鑰相同,非對稱加解密的密鑰不同。

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

摘要算法

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

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

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

HMAC

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

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

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

為什么會有這樣的效果?

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

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

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

總結(jié)

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

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

以后使用時候也能有的放矢,面試時也不會鬧出笑話。

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

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

今天因為你的點(diǎn)贊,讓我元?dú)鉂M滿!

總結(jié)

以上是生活随笔為你收集整理的你怕是对MD5算法有误解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。