導航:首頁 > 源碼編譯 > 現在使用的消息摘要演算法

現在使用的消息摘要演算法

發布時間:2024-12-05 00:30:09

㈠ MD5演算法原理

MD5演算法是一種廣泛使用的哈希函數,其核心原理是將輸入信息以512位分組處理,每組再細分為16個32位子分組。經過一系列復雜運算後,最終生成一個128位的散列值,通常表現為四個32位的值級聯。


在執行MD5前,需要對輸入信息進行填充,確保其位長能被512整除,具體方法是:在信息末尾添加1和0,直到位長為N*512+448,然後附加一個表示原始信息長度的64位二進制數,這樣最終長度為(N+1)*512。這種填充方式是為了滿足後續運算對信息長度的要求。


MD5演算法使用四個32位的鏈接變數,初始值為A=0x67452301, B=0xefcdab89, C=0x98badcfe, D=0x10325476。演算法通過四輪循環運算,每輪包括16次操作,每次操作涉及三個變數和一個子分組,以及一個非線性函數(F、G、H、I)。這些函數保證了結果的獨立性和均勻性。


循環過程中的操作如下:首先復制鏈接變數到新的變數,然後進行四輪循環,每輪包含16次操作,每次操作都會用到上述非線性函數,並與子分組和特定常數進行加法和位移運算,最後用結果替換鏈接變數。每輪的函數不同,但操作模式相似。


經過四輪循環後,將每個輪次的鏈接變數值累加到原始值,得到最終的128位散列值。MD5演算法的輸出通常用十六進製表示,可以用來驗證信息的完整性或唯一性,例如通過提供的幾個例子進行驗證。




(1)現在使用的消息摘要演算法擴展閱讀

Message Digest Algorithm MD5(中文名為消息摘要演算法第五版)為計算機安全領域廣泛使用的一種散列函數,用以提供消息的完整性保護。該演算法的文件號為RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)

㈡ md5是什麼演算法

MD5消息摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值,用於確保信息傳輸完整一致。MD5由美國密碼學家羅納德·李維斯特設計,於1992年公開,用以取代MD4演算法。這套演算法的程序在RFC 1321中被加以規范。

MD5碼可以使用「MD5」校驗工具取得,大學生數學建模競賽採用MD5碼主要是為了保證學生上傳文件的完整性,也是保證公平競賽的一個手段。

任何對文件內容的修改和打開重新保存都會使文件的MD5碼改變,但對文件重命名、復制粘貼不改變MD5碼。

(2)現在使用的消息摘要演算法擴展閱讀

md5碼的特性:

不可逆性

這個特徵碼有如下特性,首先它不可逆,例如我有一段秘密的文字如:"My Secret Words",經演算法變換後得到MD5碼(),把這個碼告訴其他人,他們根據這個MD5碼是沒有系統的方法可以知道你原來的文字是什麼的。

離散性

其次,這個碼具有高度的離散性,也就是說,原信息的一點點變化就會導致MD5的巨大變化,例如"ABC" MD5()和"ABC "(多了一空格)MD5()差別非常大,而且之間沒有任何關系,也就是說產生的MD5碼是不可預測的。

碼位性

最後由於這個碼有128位那麼長,所以任意信息之間具有相同MD5碼的可能性非常之低,通常被認為是不可能的。

javaMD5和SHA256等常用加密演算法

前言

我們在做java項目開發的時候,在前後端介面分離模式下,介面信息需要加密處理,做簽名認證,還有在用戶登錄信息密碼等也都需要數據加密。信息加密是現在幾乎所有項目都需要用到的技術,身份認證、單點登陸、信息通訊、支付交易等場景中經常會需要用到加密演算法,所謂加密演算法,就是將原本的明文通過一系列演算法操作變成密文。

BASE嚴格地說,屬於編碼格式,而非加密演算法MD(MessageDigestalgorithm,信息摘要演算法)SHA(SecureHashAlgorithm,安全散列演算法)HMAC(HashMessageAuthenticationCode,散列消息鑒別碼)

加密演算法中SHA1、SHA-224、SHA-256、SHA-384,和SHA-512,其中SHA-224、SHA-256、SHA-384,和SHA-512我們可以統稱為SHA2加密演算法

SHA加密演算法的安全性要比MD5更高,而SHA2加密演算法比SHA1的要高。其中SHA後面的數字表示的是加密後的字元串長度,SHA1默認會產生一個160位的信息摘要。

MD5

MD5信息摘要演算法(英語:MD5Message-DigestAlgorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值(hashvalue),用於確保信息傳輸完整一致。

MD5演算法有以下特點:

壓縮性:無論數據長度是多少,計算出來的MD5值長度相同

容易計算性:由原數據容易計算出MD5值

抗修改性:即便修改一個位元組,計算出來的MD5值也會巨大差異

抗碰撞性:知道數據和MD5值,很小概率找到相同MD5值相同的原數據

准確來講,MD5不是一種加密演算法,而是一種摘要演算法,MD5能將明文輸出為128bits的字元串,這個字元串是無法再被轉換成明文的。網上一些MD5解密網站也只是保存了一些字元串對應的md5串,通過已經記錄的md5串來找出原文。

我做過的幾個項目中經常見到MD5用在加密上的場景。比如對密碼的加密,生成一個密碼後,使用MD5生成一個128位字元串保存在資料庫中,用戶輸入密碼後也先生成MD5串,再去資料庫里比較。因此我們在找回密碼時是無法得到原來的密碼的,因為明文密碼根本不會被保存。

SHA系列

安全散列演算法(英語:SecureHashAlgorithm,縮寫為SHA)是一個密碼散列函數家族,是FIPS所認證的安全散列演算法。能計算出一個數字消息所對應到的,長度固定的字元串(又稱消息摘要)的演算法。且若輸入的消息不同,它們對應到不同字元串的機率很高。

2005年8月17日的CRYPTO會議尾聲中王小雲、姚期智、姚儲楓再度發表更有效率的SHA-1攻擊法,能在2的63次方個計算復雜度內找到碰撞。

也就是說SHA-1加密演算法有碰撞的可能性,雖然很小。

HMAC

HMAC是密鑰相關的哈希運算消息認證碼(Hash-)的縮寫,由H.Krawezyk,M.Bellare,R.Canetti於1996年提出的一種基於Hash函數和密鑰進行消息認證的方法,並於1997年作為RFC2104被公布,並在IPSec和其他網路協議(如SSL)中得以廣泛應用,現在已經成為事實上的Internet安全標准。它可以與任何迭代散列函數捆綁使用。

HMAC演算法更像是一種加密演算法,它引入了密鑰,其安全性已經不完全依賴於所使用的Hash演算法

如果要使用加密,推薦使用SHA256、SHA384、SHA512以及HMAC-SHA256、HMAC-SHA384、HMAC-SHA512這幾種演算法。

對稱加密演算法

對稱加密演算法是應用比較早的演算法,在數據加密和解密的時用的都是同一個密鑰,這就造成了密鑰管理困難的問題。常見的對稱加密演算法有DES、3DES、AES128、AES192、AES256(默認安裝的JDK尚不支持AES256,需要安裝對應的jce補丁進行升級jce1.7,jce1.8)。其中AES後面的數字代表的是密鑰長度。對稱加密演算法的安全性相對較低,比較適用的場景就是內網環境中的加解密。

所謂對稱加密,就是通過密鑰加密後可以再通過密鑰解密。我接觸過的某個國企現在內部就是採用AES的方式實現集成登陸。第三方系統提供一個接收用戶信息的介面,該國企將用戶信息AES加密後通過這個介面傳遞給第三方系統,第三方系統自行實現登陸操作。這里需要注意的是密鑰十分重要,如果密鑰丟失,就有信息泄漏的風險。

加密鹽

加密鹽也是比較常聽到的一個概念,鹽就是一個隨機字元串用來和我們的加密串拼接後進行加密。

加鹽主要是為了提供加密字元串的安全性。假如有一個加鹽後的加密串,黑客通過一定手段這個加密串,他拿到的明文,並不是我們加密前的字元串,而是加密前的字元串和鹽組合的字元串,這樣相對來說又增加了字元串的安全性。

在線加密網站

站長工具

在線加密

總結

比較推薦的幾個加密演算法有:

不可逆加密:SHA256、SHA384、SHA512以及HMAC-SHA256、HMAC-SHA384、HMAC-SHA512

對稱加密演算法:AES、3DES

非對稱加密演算法:RSA

參考

常用的加密演算法

淺析五種最常用的Java加密演算法

https://juejin.cn/post/6844903638117122056#heading-3

閱讀全文

與現在使用的消息摘要演算法相關的資料

熱點內容
湖南伺服器安全雲空間 瀏覽:603
文件夾是只讀怎麼辦 瀏覽:891
linuxtelnet退出命令 瀏覽:246
稅務局預交2演算法 瀏覽:531
前饋pid演算法 瀏覽:145
安卓怎麼使用投影儀 瀏覽:938
雲計算伺服器貴州雲主機 瀏覽:389
淘米APP是哪個公司 瀏覽:452
程序員玩車 瀏覽:474
安卓騰訊手游換成蘋果手機怎麼辦 瀏覽:526
主播皮克桃玩的什麼安卓區 瀏覽:565
linux單詞統計 瀏覽:907
小朋友參加密室大逃脫 瀏覽:218
程序員的三大忌 瀏覽:284
空調壓縮機機頭 瀏覽:765
戶戶通加密卡號幾位 瀏覽:282
alphabeta剪枝演算法 瀏覽:627
csgo命令台怎麼打開 瀏覽:223
sqldump命令 瀏覽:718
如何組建伺服器運行excel 瀏覽:131