講道理,MD5 到底是不是加密算法?

2021-03-02 碼農有道

在回答這個問題之前,我們先分別來了解一下兩個知識點:

一、MD5算法

MD5 即 Message-Digest Algorithm 5(信息-摘要算法5),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊算法之一,主流程式語言普遍已有 MD5 實現。

將數據(如漢字)運算為另一固定長度值,是雜湊算法的基礎原理,MD5 的前身有 MD2 、MD3 和 MD4 。

MD5 是輸入不定長度信息,輸出固定長度 128-bits 的算法。經過程序流程,生成四個32位數據,最後聯合起來成為一個 128-bits 散列。

基本方式為,求餘、取餘、調整長度、與連結變量進行循環運算,得出結果。

MD5 計算廣泛應用於錯誤檢查。在一些 BitTorrent 下載中,軟體通過計算 MD5 來檢驗下載到的碎片的完整性。

二、加密算法

百度百科:加密,是以某種特殊的算法改變原有的信息數據,使得未授權的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無法了解信息的內容。

維基百科:在密碼學中,加密(英語:Encryption)是將明文信息改變為難以讀取的密文內容,使之不可讀的過程。只有擁有解密方法的對象,經由解密過程,才能將密文還原為正常可讀的內容。

三、對比

也就是說,MD5 算法和加密算法都可以將信息轉換為另外一種內容。

但是,MD5 算法對比 加密算法 缺少了解密過程。

事實上,使用 加密算法 加密後的消息是完整的,並且基於解密算法後,可以恢復原始數據。

MD5 算法 得到的消息是不完整的,並且通過摘要的數據也無法得到原始數據。

所以,MD5 算法不是加密算法

嘿,你在看嗎

相關焦點

  • 一種基於Md5算法的改進加密方法
    由於md5算法的使用不需要支付任何版權費用的,所以在一般的情況下,md5也不失為一種非常優秀的加密算法,被大量公司和個人廣泛使用。2004年8月17日的美國加州聖巴巴拉的國際密碼學會議(Crypto』2004)上,來自中國山東大學的王小雲教授做了破譯MD5、HAVAL-128、 MD4和RIPEMD算法的報告,公布了MD系列算法的破解結果,MD5破解工程權威網站(http://www.md5crk.com)也因此關閉,從此宣布MD5加密算法不再是一種安全的加密算法。
  • MD5 到底是不是加密?
    哈希算法,即 hash,又叫散列算法,是一類把任意數據轉換為定長(或限制長度)數據的算法統稱。例如我叫張三,你叫李四,那麼「人 -> 人名」的算法就叫屬於一種哈希算法。哈希算法通常用於製作數字指紋,數字指紋的意思就是「你看到這個東西就像看到原數據一樣」,例如我們在一些網站下載大文件的時候,網站提供給我們驗證文件完整性的 MD5 或者 SHA1 碼,就是原文件的哈希值。
  • CSharp如何運用MD5算法加密密碼?
    MD5(Message-Digest Algorithm 5)是一種廣泛使用的「消息-摘要算法」。這是一個單項散列函數,數據經過單向散列函數獲取一個固定長度的散列值,資料庫的籤名就是計算資料庫的散列值,MD5算法的散列值為128位。
  • Python 中 MD5 加密
    是計算機廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流程式語言普遍已有 MD5 實現。將數據(如漢字)運算為另一固定長度值,是雜湊算法的基礎原理,MD5 的前身有 MD2、MD3 和 MD4。MD5 的作用是讓大容量信息在用數字籤名軟體籤署私人密鑰前被"壓縮"成一種保密的格式(就是把一個任意長度的字節串變換成一定長的十六進位數字串)。
  • C Sharp程式語言如何實現MD5加密的一個實例分享
    一、MD5介紹:MD5在軟體行業是再常見不過的一個詞了,即使你從沒使用過它,也不知道它到底是個什麼東西,但你肯定聽過這個詞MD5的全稱是message-digest algorithm5(信息-摘要算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest開發出來, 經md2、md3和md4發展而來。
  • php幾種常用的加密解密算法
    內容原創本文給大家介紹php的三種常用的加密解密算法,有一定的參考價值,有需要的朋友可以參考一下,希望對你們有所幫助。php 自帶的加密函數:不可逆的加密函數為:md5()、sha1()、crypt()md5() 用來計算 MD5 哈稀md5(string$str[,bool$raw_output=FALSE] ) :string使用:$str = '123456789
  • Java加密與解密:消息摘要算法MD5
    MD2算法。此外,關於MD4算的處理和MD2算法有很大的差別。但最終仍舊會獲得一個128為的散列值。MD4算法對後續消息摘要算法起到了推動作用,許多比較有名的消息摘要算法都是在MD4算法的基礎上發展而來的,如MD5、SHA-1、RIPE-MD和HAVAL算法等。
  • md5到md5破解的一些科普
    看到網上一些對於md5的介紹還有對於當初王小雲所做的破解有很多的誤解,或者說不理解,然後覺得對於這些事情只要說明白還是比較好理解的說。首先md5其實就是一種hash,或者叫散列函數,有的地方叫雜湊函數,都是一個東西啦,其實他就是一種映射,而平常最常見的就是說md5是不可逆的,為什麼不可逆呢,有人就說就是像有些函數沒有反函數那樣了,其實還是有點抽象,考慮md5是多對一的映射,也就是說很多不同的經過md5變換之後可能會是相同的,那麼既然多對一,自然是不可逆啦╮(╯▽╰)╭,你怎麼會知道他到底是由哪個變換過來的呢。
  • 三個牛逼的加密算法!
    DES算法•DES全稱為Data Encryption Standard,即數據加密標準,是一種使用密鑰加密的塊算法。
  • Python 中 MD5 哈希函數的實現
    在本文中,我們將學習Python中的MD5
  • 理解數字籤名、加密通信的關鍵:哈希算法
    哈希算法的分類  下一步我們把哈希函數分類,更細緻的聊聊哈希算法的特點。首先說哈希算法有很多種,例如 md5 ,SHA256 等等,但是它們總體上可以分為兩大類,一類是普通哈希,另外一類是加密哈希,cryptographic hash function 。  業界可以找到的哈希算法是有很多種的。
  • 對稱加密及AES加密算法
    2、對稱加密的工作過程 3、對稱加密的優點 4、對稱加密的兩大不足二、AES加密算法 1、什麼是AES加密算法及AES加密算法的形成過程 2、AES的加密流程(要理解AES的加密流程,會涉及到AES的五個關鍵詞:分組密碼體制、Padding、初始向量IV、密鑰、四種加密模式) 3、AES的加密原理(要理解AES的加密原理,會涉及到AES的四個關鍵詞:密鑰擴展、初始輪、重複輪、最終輪
  • DES加密算法
    (1)定義在對稱加密算法中,數據發信方將明文(原始數據)和加密密鑰一起經過特殊加密算法處理後,使其變成複雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對密文進行解密,才能使其恢復成可讀明文。
  • MD5 簡介,及其在 Java 中的實現方式
    MD5,Message Digest Algorithm 5,是一種被廣泛使用的信息摘要算法,可以將給定的任意長度數據通過一定的算法計算得出一個 128 位固定長度的散列值。不過,經過 MD4、MD3 等幾代算法的優化,MD5 已經充分利用散列的分散性高度避免碰撞的發生。可以看出,MD5 是一種不可逆的算法,也就說,你無法通過得到的 MD5 值逆向算出原數據內容。正是憑藉這些特點,MD5 被廣泛使用。
  • [基礎] 幾種好用的PHP自定義加密函數(可逆/不可逆)
    項目中有時我們需要使用PHP將特定的信息進行加密,也就是通過加密算法生成一個加密字符串,這些加密後的字符串可以通過解密算法進行解密,便於程序對解密後的信息進行處理。最常見的應用在用戶登錄以及一些API數據交換的場景。加密解密原理一般都是通過一定的加密解密算法,將密鑰加入到算法中,最終得到加密解密結果。
  • 黑馬程式設計師:PHP程式設計師必看—詳解PHP加密
    數據的加/解密都需 要一定的算法,這些算法可以非常地簡單,如著名的凱撒碼,但當前的加密算法要相對複雜得多,其中一些利用現有的方法甚至是無法破譯的 。因為,單向加密的口令一旦落入第三方人的手裡,由於不能被還原為明文,因此也沒有什麼大用處。在驗證用戶輸 入的口令時,用戶的輸入採用的也是單向算法,如果輸入與存儲的經加密後的口令相匹配,則輸入的口信一定是正確的。PHP同樣提供了使用其crypt()函數完成單向加密功能的可能性。
  • 淺談md5弱類型比較和強碰撞
    由於md5不能加密數組,在加密數組的時候會返回NULL所以,我們可以傳入兩個數組可以查找以0e開頭md5加密相等的字符串,也可以自己編寫代碼,提供以下腳本。<?= md5_2,所以我們不能傳入兩個md5加密後以0e開頭的字符串。又因為會將md5加密後的str1和str2中的cxhp替換成0123,也就是說c會被替換成0,所以一個ce開頭的字符串會被替換成0e開頭的字符串。
  • 到底什麼是DES加密算法?這樣理解試試!
    由於沒有經過加密,明文很容易被識別與破解,因此在傳輸明文之前必須進行加密處理。密文:密文只是明文經過某種加密算法而得到的數據,通常密文的形式複雜難以識別及理解。密鑰:密鑰是一種參數,它是在明文轉換為密文或將密文轉換為明文的算法中輸入的參數。
  • 一文讀懂對稱加密算法、非對稱加密算法和Hash算法
    一、簡述常見的加密算法可以分成三類,對稱加密算法,非對稱加密算法和Hash算法。對稱加密指加密和解密使用相同密鑰的加密算法。對稱加密算法的優點在於加解密的高速度和使用長密鑰時的難破解性。我們應該根據自己的使用特點來確定,由於非對稱加密算法的運行速度比對稱加密算法的速度慢很多,當我們需要加密大量的數據時,建議採用對稱加密算法,提高加解密速度。對稱加密算法不能實現籤名,因此籤名只能非對稱算法。由於對稱加密算法的密鑰管理是一個複雜的過程,密鑰的管理直接決定著他的安全性,因此當數據量很小時,我們可以考慮採用非對稱加密算法。
  • 師弟不講武德,這編碼算法也講得忒溜了……
    要特別注意:URL編碼是`編碼算法`,`不是加密算法`。URL編碼的目的是`把任意文本數據編碼為%前綴表示的文本`,編碼後的文本僅包含`A~Z,a~z,0~9,-,_,.,和%,便於瀏覽器和伺服器處理。