日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在介紹MD5原理前,先說一些計算機基礎知識。

1.數組

數組是計算機存儲數據最原始的一種數據類型。在日常生活照經常會遇到。考慮如下一種情況:

A班級有13個學生,假設每個學生都有一個學號,為了方便說明,我們用0,1,2,3...12 對這13個學生進行編號。

這其實就是一個最簡單的數組,如下圖

計算機加密之-MD5算法?什么叫做MD5算法?有何用?

 

如果我們用C#實現偽代碼,類似如下:

計算機加密之-MD5算法?什么叫做MD5算法?有何用?

 

這樣,如果需要獲取“學生5”的信息,直接用數組下標 students[5] 即可獲得學生信息。

2.數據映射

在上面,利用數組存儲學生是好的,但是有缺陷,因為數組是從0開始的,如果班級里有4個學生,為6,7,9,12,可以看到學號不是從0開始,而且又不連續,

計算機加密之-MD5算法?什么叫做MD5算法?有何用?

 

為了存儲四個學生,仍然需要開辟13個存儲空間,這導致大量的空間被浪費。

為此,可以采用算法壓縮空間。最容易想到的是取余數。

6,7,9,12共4個數,也就意味著最多只要4個空間,所以,利用除法求余數計算位置。

我們小學學過的 6除以4等于1余2,寫成6÷4=1...2,在計算機里通常使用/表示除法,用%表示求余數),所以可以得到

6%4=2
7%4=3
9%4=1
12%4=0 

這樣,可以認為學生學號x通過一個簡單的函數y=f(x)映射轉換,就轉換為存儲位置。

3.不可逆

在上面映射里,你可能發現數據是可能沖突的,例如學生7和學生11經過求余

7%4=3
11%4=3

兩個不同的學生經過映射后,得到了同一個數字3,所以,根據3你推導不出學生的學號是7還是11.

更通俗的解釋為:a=2,b=8,那么 a+b=10,但是給你10,你推導不出a=2,b=8。因為a,b可以有很多種組合。

計算機加密之-MD5算法?什么叫做MD5算法?有何用?

 

在MD5加密里,經常聽到MD5是一種不可逆算法,如果我們把上面例子中,學生學號理解為密碼的明文,存儲地址理解為MD5加密的密文,就可能出現:

MD5(123456)=e10adc3949ba59abbe56e057f20f883e
MD5(abcdef)=e10adc3949ba59abbe56e057f20f883e

123456和abcdef 加密后,其密文一樣。

再想象一種情況:一個網站宣傳說用戶登錄網站時,密碼采用了MD5加密。這表示網站是把你的密碼加密后存放到SQL數據庫里。萬一有一天黑客下載到了SQL數據庫, 他可能看到

張三 e10adc3949ba59abbe56e057f20f883e 男 18歲
李四 e10adc3949ba59abbe56e057f20f883e 男 20歲

這樣黑客雖然下載了數據庫,但是仍然看不到用戶的密碼。可以最大限度減少用戶的損失。

這很重要,因為很多用戶怕麻煩,他們的密碼設置都是一樣的,你登錄QQ的密碼通常和你登錄郵件的密碼是一樣的。 你的工行銀行取款密碼可能和農行取款密碼也是一樣的!

3.哈希表

在上面介紹里,使用學生號作為學生編號,但是,這種編號不容易人的讀取,一個最好的方式是使用“學生姓名”作為學生編號的標志。這種“鍵-值”模式就是哈希表最原始的方式。

哈希表其實是Hash的音譯過來的。

假如對學生信息進行存儲時,采用的Hash函數為:姓名的每個字的拼音開頭大寫字母的ASCII碼之和。

Hash(張三)=ASCII(Z)+ASCII(S)=90+83=173;
Hash(李四)=ASCII(L)+ASCII(S)=76+83=159;
Hash(王五)=ASCII(W)+ASCII(W)=87+87=174;
Hash(張帥)=ASCII(Z)+ASCII(S)=90+83=173;

當然,這種設計可能會有沖突, 例如張三和張帥的Hash值都是174,所以在構造Hash函數時應盡量考慮關鍵字的分布特點來避免沖突。

哈希函數也被成為散列函數。

4.MD5算法

MD5消息摘要算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼哈希函數,可以產生出一個128位(16字節)的散列值(hash value),用于確保信息傳輸完整一致。

這段話來自百科給的定義,文字很短,但是你一看到MD5的定義是:Hash函數、散列值基本上也就大致了解了MD5的意思了。

關于MD5的詳細算法很復雜,詳細見網上百科介紹。這里,我們可以自己定義一個自定義的MD5算法:

(1)姓名拼音的首字母
(2)取首字母的ASCII碼
(3)對ASCII 使用100求余。
(4)因為余數在0-99之間,要求余數必須是2位數字,如果不夠2位,則前面補0.

現在利用上面的1-4條,給你一個漢字“張”,和給你一段文本“今天是周幾”你都可以生成自定義的MD5,而且,不管是1個字還是100個字,其最終生成的密碼都是2位。

這就是MD5的壓縮性

任意長度的數據,其MD5值都固定是一個32位長度的十六進制字符串。

你能詳細出,全世界的文字是無限的,而32位固定長度能存放的信息是有線的,所以,這就說MD5力量上是可以破解的。

5.MD5的作用

對原數據做一丁點的改動,MD5值就會有巨大的變動,利用這個特性,可以對數據進行保護。

例如:你編寫了一個軟件讓用戶可以下載。此時,你可以用“姓名+最后修改時間”作為MD5的明文進行加密,然后把MD5公開。

假如黑客獲取了你的軟件并且修改他,這就會導致最后修改時間的改變,只要數據有一點點變動,MD5就會出現巨大波動。

當你最終客戶下載軟件后,可以比較MD5,看看軟件本身的MD5和公布的MD5是否一樣,如果不一樣,就表示數據被修改過。

在很多網站里,都會提供MD5,下圖顯示的是Android Studio下載的頁面,其旁邊提供有MD5值

計算機加密之-MD5算法?什么叫做MD5算法?有何用?

 

當你下載好軟件后,可以在右鍵-屬性-數字簽名-高級 里看到其值。

備注:下面顯示的sha256加密,其作用和MD5一樣。

計算機加密之-MD5算法?什么叫做MD5算法?有何用?

 

6.密碼對撞

雖然根據MD5無法推算出明文,但是黑客可以利用數據字典對撞破解密碼。什么意思呢?

我們以常規的密碼為例: 10個數字加上26個大小寫字母,考慮密碼是區分大小寫的,一共是 62個字符。

這樣,你登錄QQ,假設你的密碼為1位,那么總共只有62種可能,黑客通過MD5算把這62個情況都存儲起來:

1 c4ca4238a0b923820dcc509a6f75849b
2 c81e728d9d4c2f636f067f89cc14862c
3 eccbc87e4b5ce2fe28308fd9f2a7baf3
...
Z 21c2e59531c8710156d34a3c30ac81d5

如前面所述,當黑客獲取你數據庫里加密后的MD5后,他只要把你MD5密文和他的數據字典比較,就能獲取你的密碼明文。

獲取明文后,他就可以登錄你的QQ,登錄你的郵箱,像你的好友要錢等等。

也正因為此,很多系統在設計時,通常有3個要求:(1)密碼至少6位 (2)密碼至少包含字母,數字,特殊字符 (3)登錄次數有限制,例如你登錄超過3次,系統自動鎖定你的賬戶,禁止你再登錄。通過這3個辦法,防止黑客破解你的系統。

因為,我們使用的密碼都是英文,很多用戶都喜歡用英語單詞作為密碼,熟不知英語詞典的那些單詞的MD5都被黑客算出來了,所以,設置自己密碼時,應該要包含字母和數字。

過去曾經認為MD5是不可破解的,但是一方面隨著超級計算機運算速度越來越快,例如2018年最新公布的中國太湖之光計算機,每秒運算一千萬億次,已經有科學院成功破解了MD5,所以,對于保密性極強的系統,已經不采用MD5加密了,而采用安全性更高的sha256加密。但是對于普通小型網站,從運算性能和安全綜合考量,仍多采用MD5加密。

7.密碼加鹽

在有些系統里,例如ATM取款機,其密碼限制了只能使用0-9這10個數字,安全性降低了,為了提高安全,可以對密碼進行加鹽。

秘密加鹽可以見到理解為對密碼二次加密。

因為ATM初始密碼只能是0-9這10個數字,假如一個ATM取款密碼是123456,通過一個函數salt()對明文進行簡單加密,例如 salt(123456)=12!3ad。 然后再對加鹽后的密碼加密成MD5。 MD5(12!3ad)=e21bc87e4b5ce2fe2830w348fd9f2a7b,最后再把這個MD5存放到數據庫。

加鹽的主要目的,是讓密碼更難破解。

分享到:
標簽:MD5
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定