MD5加密是什么?
MD5加密是什么?
MD5的全稱是Message-Digest Algorithm 5(信息-摘要算法),是讓大容量信息在用數(shù)字簽名軟件簽署私人密匙前被”壓縮”成一種保密的格式(就是把一個(gè)任意長(zhǎng)度的字節(jié)串變換成一定長(zhǎng)的大整數(shù))。不管是MD2、MD4還是MD5,它們都需要獲得一個(gè)隨機(jī)長(zhǎng)度的信息并產(chǎn)生一個(gè)128位的信息摘要。雖然這些算法的結(jié)構(gòu)或多或少有些相似,但MD2的設(shè)計(jì)與MD4和MD5完全不同,那是因?yàn)镸D2是為8位機(jī)器做過設(shè)計(jì)優(yōu)化的,而MD4和MD5卻是面向32位的電腦。這三個(gè)算法的描述和C語言源代碼在Internet RFCs 1321中有詳細(xì)的描述,這是一份最權(quán)威的文檔,由Ronald L. Rivest在1992年8月向IETF提交。

MD5算法的原理可簡(jiǎn)要的敘述為:MD5碼以512位分組來處理輸入的信息,且每一分組又被劃分為16個(gè)32位子分組,經(jīng)過了一系列的處理后,算法的輸出由四個(gè)32位分組組成,將這四個(gè)32位分組級(jí)聯(lián)后將生成一個(gè)128位散列值。
在MD5算法中,首先需要對(duì)信息進(jìn)行填充,這個(gè)數(shù)據(jù)按位(bit)補(bǔ)充,要求最終的位數(shù)對(duì)512求模的結(jié)果為448。也就是說數(shù)據(jù)補(bǔ)位后,其位數(shù)長(zhǎng)度只差64位(bit)就是512的整數(shù)倍。
即便是這個(gè)數(shù)據(jù)的位數(shù)對(duì)512求模的結(jié)果正好是448也必須進(jìn)行補(bǔ)位。
補(bǔ)位的實(shí)現(xiàn)過程:首先在數(shù)據(jù)后補(bǔ)一個(gè)1 bit; 接著在后面補(bǔ)上一堆0 bit, 直到整個(gè)數(shù)據(jù)的位數(shù)對(duì)512求模的結(jié)果正好為448。至少補(bǔ)1位,而最多可能補(bǔ)512位