首頁 常見問題 md5加密演算法

md5加密演算法

Sep 02, 2019 am 09:18 AM
md5

什麼是MD5演算法

MD5資訊摘要演算法(英文:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼雜湊函數,可以產生一個128位元(16位元組)的雜湊值(hash value),用於確保訊息傳輸完整一致。

md5加密演算法

MD5功能(推薦學習:web前端影片教學

輸入任意長度的信息,經過處理,輸出為128位的信息(數字指紋); 

不同的輸入得到的不同的結果(唯一性);

MD5屬不屬於加密演算法

認為不屬於的人是因為他們覺得不能從密文(雜湊值)反過來得到原文,也就是沒有解密演算法,所以這部分人認為MD5只能屬於演算法,不能稱為加密演算法; 

認為屬於的人是因為他們覺得經過MD5處理後看不到原文,也就是已經將原文加密,所以認為MD5屬於加密演算法;我個人支持前者,如同認為BASE64演算法只能算編碼。

MD5演算法是否可逆?

MD5不可逆的原因是其是一種雜湊函數,使用的是hash演算法,在計算過程中原文的部分資訊是遺失了的。

不過有個地方值得指出的是,一個MD5理論上的確是可能對應無數多個原文的,因為MD5是有限多個的而原文可以是無數多個。例如主流使用的MD5將任意長度的「位元組字串映射為一個128bit的大整數。

#也就是一共有2^128種可能,大概是3.4*10^38,這個數字是有限多個的,而但是世界上可以被用來加密的原文則會有無數的可能性。

不過需要注意的一點是,盡量這是一個理論上的有限對無限,不過問題是這個無限在現實生活中並不完全成立,因為一方面現實中原文的長度往往是有限的(以常用的密碼為例,一般人都在20位以內),另一方面目前想要發現兩段原文對應同一個MD5(專業的說這叫做雜湊衝撞)值非常困難,因此某種意義上來說,在一定範圍內想構建MD5值與原文的一一對應關係是完全有可能的。所以對於MD5目前最有效的攻擊方式就是彩虹表,具體詳情你可以透過Google了解。

MD5相當於超損壓縮。

##MD5用途

1.防止被篡改: 

1)例如發送一個電子文檔,發送前,我先得到MD5的輸出結果a。然後在對方收到電子文檔後,對方也得到一個MD5的輸出結果b.如果a與b一樣就代表中途未被篡改。 

2)例如我提供文件下載,為了防止不法分子在安裝程序中添加木馬,我可以在網站上公佈由安裝文件所得的MD5輸出結果。 

3)SVN在偵測檔案是否在CheckOut後被修改過,也是用到了MD5.

2.防止直接看到明文: 

#現在很多網站在資料庫儲存使用者的密碼的時候都是儲存使用者密碼的MD5值。這樣就算不法分子得到資料庫的使用者密碼的MD5值,也無法知道使用者的密碼。(例如在UNIX系統中使用者的密碼就是以MD5(或其它類似的演算法)經過加密後儲存在檔案系統中。

當使用者登入的時候,系統把使用者輸入的密碼計算成MD5值,然後再去和儲存在檔案系統中的MD5值進行比較,進而確定輸入的密碼是否正確。

透過這樣的步驟,系統在不知道使用者密碼的明碼的情況下就可以確定使用者登入系統的合法性。這不但可以避免使用者的密碼被具有系統管理員權限的使用者知道,而且還在一定程度上增加了密碼被破解的難度。)

3.防止抵賴(數位簽章): 

#這需要一個第三方認證機構。例如A寫了一個文件,認證機構對此文件用MD5演算法產生摘要資訊並做好記錄。

若以後A說這文件不是他寫的,權威機構只需對此文件重新產生摘要信息,然後跟記錄在冊的摘要信息進行比對,相同的話,就證明是A寫的了。這就是所謂的「數位簽章」。

MD5安全性

普遍認為MD5是很安全,因為暴力破解的時間是一般人無法接受的。實際上如果把用戶的密碼MD5處理後再儲存到資料庫,其實是很不安全的。

因為使用者的密碼是比較短的,而且很多使用者的密碼都使用生日,手機號碼,身分證號碼,電話號碼等等。或使用常用的一些吉利的數字,或是某個英文單字。如果我把常用的密碼先MD5處理,把資料存起來,然後再跟你的MD5結果匹配,這時我就有可能得到明文。

例如某個MD5破解網站http://www.cmd5.com/default.aspx,所以現在大多數網站密碼的策略是強制要求使用者使用數字大小寫字母的組合的方式來提高使用者密碼的安全度。

以上是md5加密演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1280
29
C# 教程
1257
24
MySQL中如何使用MD5加密 MySQL中如何使用MD5加密 May 28, 2023 pm 02:16 PM

什麼是MD5? MD5資訊摘要演算法(英文:MD5Message-DigestAgorithm),一種被廣泛使用的密碼雜湊函數,可以產生一個128位元(16位元組)的雜湊值(hashvalue),用來確保資訊傳輸完整一致。 MD5由美國密碼學家羅納德·李維斯特(RonaldLinnRivest))設計,於1992年公開,以取代MD4演算法。這套演算法的程式在RFC1321標準中被加以規範。 1996年後該演算法被證實有弱點,可以被加以破解,對於需要高度安全性的數據,專家一般建議改用其他

PHP計算檔案的 MD5 雜湊 PHP計算檔案的 MD5 雜湊 Mar 21, 2024 pm 01:42 PM

這篇文章將為大家詳細講解有關PHP計算文件的MD5散列,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP計算檔案的MD5雜湊MD5(MessageDigest5)是一種單向加密演算法,可將任意長度的訊息轉換為固定長度的128位元雜湊值。它廣泛用於確保文件完整性、驗證資料真實性和建立數位簽章。在PHP中計算檔案的MD5雜湊php提供了多種方法來計算檔案的MD5雜湊:使用md5_file()函數md5_file()函數直接計算檔案的MD5雜湊值,傳回一個32個字元的

PHP計算字串的 MD5 雜湊值 PHP計算字串的 MD5 雜湊值 Mar 21, 2024 am 10:51 AM

這篇文章將為大家詳細講解有關PHP計算字串的MD5散列值,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。 PHP中計算字串的MD5雜湊值引言MD5(訊息摘要5)是一種流行的密碼學雜湊函數,用於產生固定長度的雜湊值,常用於保護資料完整性、驗證檔案完整性和建立數位簽章。本文將指南php開發人員如何使用內建函數計算字串的MD5雜湊值。 md5()函數PHP提供了md5()函數來計算字串的MD5雜湊值。此函數接收一個字串參數並傳回一個32個字元長度的16進位雜湊值

linux md5 工具是什麼 linux md5 工具是什麼 Jun 29, 2023 am 10:51 AM

linux md5工具是用於計算和驗證檔案的MD5雜湊值的工具,MD5是一種常用的雜湊演算法,用於產生唯一的、固定長度的雜湊值,通常為128位,在Linux終端機中使用md5sum指令,其語法為「md5sum <檔案路徑>」。

怎麼使用Java計算修改文件的MD5值 怎麼使用Java計算修改文件的MD5值 May 29, 2023 am 08:16 AM

什麼是MD5? MD5(MessageDigestAlgorithm,資訊摘要演算法),一種被廣泛使用的密碼雜湊函數,可以產生一個128位元(16位元組)的雜湊值(hashvalue),用於確保資訊傳輸完整一致。它後面這個數字5是因為它是為了取代MD4而發明的。簡單的理解,它的作用就是給文件一個唯一標識。如果我們修改了一個檔案的副檔名,檔案可能會打不開,但對於MD5來說,並沒有什麼改變。所以對於一個文件,進行任何的重新命名對於md5校驗都是沒有用的。 MD5的應用這裡只提幾點我看過的比較頻繁的應用情況

Java雙重MD5加密怎麼實現安全登入 Java雙重MD5加密怎麼實現安全登入 May 17, 2023 pm 05:31 PM

一:問題引入對儲存在資料庫中的密碼進行解密操作:可以看到成功將我的密碼解密出來,這讓我很吃驚,因為我們都知道MD5演算法是不可逆的,因為它是其是一種散列函數,使用的是hash演算法,在計算過程中原文的部分資訊是遺失了的。那為什麼網站中可以將我的密碼解密出來呢?經過一番查找後發現,原來在線解密工具的解密原理很簡單,其原理是收集用戶常用的簡單密碼形成了一個密碼字典,並將字典中的密碼用MD5加密後存儲起來,在所謂的“解密「的時候,就將真正用戶密碼加密都的密文與已儲存的密碼相比較,如該密文存在於字典當中,

如何使用python實現md5加密 如何使用python實現md5加密 May 13, 2023 pm 08:04 PM

python實作MD5加密1、簡介MessageDigestAlgorithmMD5(中文名為訊息摘要演算法第五版)為電腦安全領域廣泛使用的一種雜湊函數,用於確保資訊傳輸完整一致。 MD5是單向加密,指只能加密資料而無法解密數據,主要解決資料的完整性問題。摘要演算法又稱哈希演算法、雜湊演算法。它通過一個函數,把任意長度的資料轉換為一個長度固定的資料字串(通常用16進制的字串表示)。 MD5是最常見的摘要演算法,速度很快,可以將一個字串,或文件,或壓縮包,執行md5後,產生一個固定長度為128bit的串,通

java檔案合併與修改md5值的問題怎麼解決 java檔案合併與修改md5值的問題怎麼解決 May 10, 2023 pm 09:46 PM

文字檔案合併運作效果:運行前:在這個路徑下面有9個檔案。運行後:產生了一個merge.txt檔案檔案內容展示程式碼部分這部分程式碼,功能很簡單就是把一個個的文字檔案合併後寫入一個總的merge.txt資料夾,當時學會了往文件裡追加內容,所以寫了這個demo。簡單來說就是取得每一個文件(文字文件,我進行了過濾。)得到一個輸入流,然後一個循環內,每次將一個文件的資訊寫入合併的文件內,循環結束,文件合併就完成了。 packagecom.filemerge;importjava.io.BufferedRead