MD5與SHA雜湊單項加密

2021-10-24 15:02:58 字數 2355 閱讀 6959

md5的英文全稱是message digest algorithm md5,譯為訊息摘要演算法第五版,是眾多雜湊演算法中的一種(雜湊演算法是一種可以將任意長度的輸入轉化為固定長度輸出的演算法)。因此md5演算法是一種雜湊演算法,嚴格來說不能稱之為一種加密演算法,但是它可以達到加密的效果,因此網路中會出現「md5加密」這樣的稱呼。

安全雜湊演算法(secure hash algorithm)主要適用於數字簽名標準(digital signature standard dss)裡面定義的數字簽名演算法(digital signature algorithm dsa)。對於長度小於2^64位的訊息,sha1會產生乙個160位的訊息摘要。該演算法經過加密專家多年來的發展和改進已日益完善,並被廣泛使用。該演算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預對映或資訊),並把它們轉化為長度較短、位數固定的輸出序列即雜湊值(也稱為資訊摘要或資訊認證**)的過程。雜湊函式值可以說是對明文的一種「指紋」或是「摘要」所以對雜湊值的數字簽名就可以視為對此明文的數字簽名。

明文密碼的資料庫洩漏了,使用者的所有資訊都是明文雜湊擺在黑客面前的,看似是密文,但黑客們建立了彩虹表這個東西,

彩虹表就是乙個龐大的資料庫,這個資料庫裡收集了著咱們所有人常用的密碼,以及這些密碼對應的md5值、sha-x值等雜湊值(當然還有別的各種雜湊演算法的雜湊值,不止md5和sha-x),有了這個彩虹表,黑客就可以通過比對雜湊值的方式(當然這個比對方式也在不斷進步和加快)來根據密文密碼得到明文密碼。因此如果你的密碼很不幸的剛好被蒐集在這個表裡面,就可能被破解掉,這也是為什麼很多場合我們輸密碼的時候,總是提示我們要字母數字下劃線大小寫亂七八糟各種要求,目的就是盡量使得明文密碼的複雜度增加一些,盡量使得明文密碼及其雜湊值不在彩虹表裡。現在主流彩虹表的大小一般都是100g以上,你就可以想象它收集了多少資料。

那就讓使用者還是輸簡單的密碼吧,我們通過程式來把使用者的簡單密碼變的複雜一些,然後再加密儲存起來,當然驗證的時候,使用者輸簡單密碼就能驗證通過。這個過程就稱之為加鹽。加鹽在密碼學中就是指,在密碼的任意位置插入一些指定的字串(即鹽值salt)的過程。加鹽的目的就是為了增強密碼的複雜度,從而使得密碼及其雜湊值不被收集在彩虹表裡,使得使用者的密碼無法被破解。

因為二者均由md4匯出,sha-1和md5彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:

對強行攻擊的安全性:最顯著和最重要的區別是sha-1摘要比md5摘要長32 位。使用強行技術,產生任何乙個報文使其摘要等於給定報摘要的難度對md5是2^128數量級的操作,而對sha-1則是2^160數量級的操作。這樣,sha-1對強行攻擊有更大的強度。

對密碼分析的安全性:由於md5的設計,易受密碼分析的攻擊,sha-1顯得不易受這樣的攻擊。

速度:在相同的硬體上,sha-1 的執行速度比 md5 慢。

網上瘋傳訊息山東大學的王小雲教授通過碰撞法攻破了sha1和md5演算法。其成果已經被crypto大會中的科學家所認可,是否預示雜湊加密不安全?

sha和md系列演算法是一種基於雜湊演算法的單向加密演算法,也就是說明文一經加密(雜湊),密文就不可以再被恢復為明文。一般用於數字簽名和簡單認證。

什麼是雜湊呢?就是所謂的數字指紋。雜湊將任意長度的資料雜湊成定長的資料。這個定長的資料就是原始資料的摘要(指紋)。不同資料雜湊出來的指紋永遠不同,而相同資料雜湊出來的指紋永遠相同(理論上)。而且永遠無法從雜湊後的資料恢復原始資料。

雜湊的安全性是基於概率以及實際計算機能力的理論。因為,定長資料永遠存在乙個範圍。這個範圍就是其安全性的瓶頸。因為現在的計算機技術無法使用窮猜法測試每乙個資料,所以在概率上認為雜湊出來的資料是獨一無二的。(如果要完成md5原始資料的窮猜法測試或者找出相同指紋但不同明文的資料大概需要3億年)

王教授的理論之所以能轟動全世界。特別是將全世界公認的md5的安全性置之死地。是因為她發明了一種基於演算法本身漏洞的演算法。將測試時間極大減少,可在極短的時間內,就能找出乙個指紋相同但明文不同的資料來。這就破壞了安全性的基點。

但是,即使md5的演算法被攻破,但其並不一定變得不安全。王教授的碰撞法雖然能找出指紋相同的另乙個資料。但這另乙個資料的內容是不確定的。

在許多場合,md5和sha1被用來實現數字簽名,特別多的是簽名一段人類文章或字串。這些文章和字串是被人類能夠直接理解的資訊。比如說簽名電子郵件,簽名交易信函等等。在這些場合中。md5和sha1還是安全的。其原因就是因為碰撞法無法確定那另乙個資料的內容。

比如說,在一電子郵件中,明文是 hello,how are you?,經過md5簽名後指紋資料為a.雖然碰撞法能找到指紋資料也為a的另一段資料。但其內容只有極小的可能性也是一段人類可以理解的資訊,比如說 **** you!,而更多的是一段亂碼。這樣的資訊人類一眼就能識別出來其被破壞過。那也就不存在安全性喪失後的損失了。

所以說,如果不能使用特定資料來偽造簽名的話,就不存在安全性喪失的問題。因此,md5和sha1演算法在一些場合中還是安全的。

雜湊加密 MD5原理

md5是一種雜湊演算法,它輸入任意長度的原文,通過乙個雜湊演算法,會得到固定長度128位 16位元組 的雜湊值。由於修改原文一點資料,獲得的雜湊值完全不同,常常用在放置資料篡改,數字簽名,以及如linux登入密碼儲存的安全認證中 typedef struct md5 cont md5 以512位 6...

MD5加密 SHA256加密 RSA加密

rsa加密 md5加密 1 md5加密較為可靠,需要引入commons codec 1.9.jar 2 md5加密不可逆,也就是加密後不能再根據加密的秘鑰去解密,網上md5解密實際上是暴力破解。如果需要可逆的話,請選擇des aes 異或 凱撒 rsa等。3 md5加密可以實現任何物件加密,這就決定...

MD5加密和雜湊演算法

md5加密演算法為現在應用最廣泛的雜湊演算法之一,該演算法廣泛應用於網際網路 的使用者檔案加密,能夠將使用者密碼加密為128位的長整數。資料庫並不明文儲存使用者密碼,而是在使用者登入時將輸入密碼字串進行md5加密,與資料庫中所儲存的md5值匹配,從而降低密碼資料庫被盜取後使用者損失的風險。md5加密...