python—模塊-hashlib加密

加密算法算法

HASH

hash:在前面內置方法也講到過,給任意一個字符串,能夠把他變成數字數據庫

他基本上是惟一的,但也有重複的可能性,他不能夠經過後面的數字反解出alex,那別人拿到這個數也沒用,他不知道寫的是什麼,基於這一特性,應用於各類加密算法(登錄網站的密碼之類的其實都基於hash),但真正的加密是經過利用hash的這個基礎又加了一些別的東西安全

 

Hash,通常翻譯作「散列」,也有直接音譯爲」哈希」的,就是把任意長度的輸入(又叫作預映射,pre-image),經過散列算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間一般遠小於輸入的空間,不一樣的輸入可能會散列成相同的輸出,而不可能從散列值來惟一的肯定輸入值。網絡

簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。函數

HASH主要用於信息安全領域中加密算法,他把一些不一樣長度的信息轉化成雜亂的128位的編碼裏,叫作HASH值.也能夠說,hash就是找到一種數據內容和數據存放地址之間的映射關係網站

 

MD5(不但能夠保證加密,還能夠保證信息的完整)

MD5訊息摘要演算法(英語:MD5 Message-Digest Algorithm),一種被普遍使用的密碼雜湊函數,能夠產生出一個128位的散列值(hash value),用於確保信息傳輸完整一致。MD5的前身有MD二、MD3和MD4。
編碼

咱們只要知道,MD5是基於hash的,網站,登錄密碼等都是基於MD5加密

MD5功能spa

輸入任意長度的信息,通過處理,輸出爲128位的信息(數字指紋);(至關於16個字符的一段值)
不一樣的輸入獲得的不一樣的結果(惟一性);翻譯

md5的特性是,無論什麼平臺,是必定的,這相對於hash來講,更近了一步,能夠保證數據的徹底一致性,是他的特性,惟一性。

應用到一個場景當中,就是數字簽名:別人和我買了一個娃娃,我經過網絡發一給他郵箱
,裏邊有個人帳戶信息,被黑客截到篡改爲黑客的帳戶,那麼用戶可能就把錢打給黑客了
,那怎麼避免呢。能夠再發郵件以前,所有md5一下,就會獲得一串數字,用戶打電話確認一下
,也是這串數字,那麼這個信息就是一致的,沒有被篡改過,由於只要輸入是肯定的,那麼輸出也必定是肯定的,也就是說數據源不變,生成的值也不會變,也就會保證了數據的一致性

 

MD5算法的特色

  1. 壓縮性:任意長度的數據,算出的MD5值的長度都是固定的,都是128位
  2. 容易計算:從原數據計算出MD5值很容易
  3. 抗修改性:對原數據進行任何改動,修改一個字節生成的MD5值區別也會很大
  4. 強抗碰撞:已知原數據和MD5,想找到一個具備相同MD5值的數據(即僞造數據)是很是困難的。

 

MD5算法是否可逆?

MD5不可逆的緣由是其是一種散列函數,使用的是hash算法,在計算過程當中原文的部分信息是丟失了的。

 

MD5用途

  1. 防止被篡改:

    • 好比發送一個電子文檔,發送前,我先獲得MD5的輸出結果a。而後在對方收到電子文檔後,對方也獲得一個MD5的輸出結果b。若是a與b同樣就表明中途未被篡改。

    • 好比我提供文件下載,爲了防止不法分子在安裝程序中添加木馬,我能夠在網站上公佈由安裝文件獲得的MD5輸出結果。

    • SVN在檢測文件是否在CheckOut後被修改過,也是用到了MD5.

  2. 防止直接看到明文:

    • 如今不少網站在數據庫存儲用戶的密碼的時候都是存儲用戶密碼的MD5值。這樣就算不法分子獲得數據庫的用戶密碼的MD5值,也沒法知道用戶的密碼。(好比在UNIX系統中用戶的密碼就是以MD5(或其它相似的算法)經加密後存儲在文件系統中。當用戶登陸的時候,系統把用戶輸入的密碼計算成MD5值,而後再去和保存在文件系統中的MD5值進行比較,進而肯定輸入的密碼是否正確。經過這樣的步驟,系統在並不知道用戶密碼的明碼的狀況下就能夠肯定用戶登陸系統的合法性。這不但能夠避免用戶的密碼被具備系統管理員權限的用戶知道,並且還在必定程度上增長了密碼被破解的難度。)
  3. 防止抵賴(數字簽名):

    • 這須要一個第三方認證機構。例如A寫了一個文件,認證機構對此文件用MD5算法產生摘要信息並作好記錄。若之後A說這文件不是他寫的,權威機構只需對此文件從新產生摘要信息,而後跟記錄在冊的摘要信息進行比對,相同的話,就證實是A寫的了。這就是所謂的「數字簽名」。

 

 網上的破解密碼不可信,他不是反解,而是撞庫,就是說在他本身的數據庫裏找

相關文章
相關標籤/搜索