導航:首頁 > 文檔加密 > md5密碼多次加密

md5密碼多次加密

發布時間:2022-08-23 12:28:40

A. MD5為什麼要多輪加密每輪加密有什麼不同

對MD5演算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,演算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。
在MD5演算法中,首先需要對信息進行填充,使其位長對512求余的結果等於448。因此,信息的位長(Bits Length)將被擴展至N*512+448,N為一個非負整數,N可以是零。填充的方法如下,在信息的後面填充一個1和無數個0,直到滿足上面的條件時才停止用0對信息的填充。然後,在這個結果後面附加一個以64位二進製表示的填充前信息長度。經過這兩步的處理,現在的信息的位長=N*512+448+64=(N+1)*512,即長度恰好是512的整數倍。這樣做的原因是為滿足後面處理中對信息長度的要求。
MD5中有四個32位被稱作鏈接變數(Chaining Variable)的整數參數,他們分別為:A=0x67452301,B=0xefcdab89,C=0x98badcfe,D=0x10325476。
當設置好這四個鏈接變數後,就開始進入演算法的四輪循環運算。循環的次數是信息中512位信息分組的數目。
將上面四個鏈接變數復制到另外四個變數中:A到a,B到b,C到c,D到d。
主循環有四輪(MD4隻有三輪),每輪循環都很相似。第一輪進行16次操作。每次操作對a、b、c和d中的其中三個作一次非線性函數運算,然後將所得結果加上第四個變數,文本的一個子分組和一個常數。再將所得結果向左環移一個不定的數,並加上a、b、c或d中之一。最後用該結果取代a、b、c或d中之一。
以一下是每次操作中用到的四個非線性函數(每輪一個)。
F(X,Y,Z) =(X&Y)|((~X)&Z)
G(X,Y,Z) =(X&Z)|(Y&(~Z))
H(X,Y,Z) =X^Y^Z
I(X,Y,Z)=Y^(X|(~Z))
(&;是與,|是或,~是非,^是異或)
這四個函數的說明:如果X、Y和Z的對應位是獨立和均勻的,那麼結果的每一位也應是獨立和均勻的。
F是一個逐位運算的函數。即,如果X,那麼Y,否則Z。函數H是逐位奇偶操作符。
假設Mj表示消息的第j個子分組(從0到15),常數ti是4294967296*abs(sin(i))的整數部分,i取值從1到64,單位是弧度。(4294967296等於2的32次方)
FF(a,b,c,d,Mj,s,ti)表示 a = b + ((a + F(b,c,d) + Mj + ti) << s)
GG(a,b,c,d,Mj,s,ti)表示 a = b + ((a + G(b,c,d) + Mj + ti) << s)
HH(a,b,c,d,Mj,s,ti)表示 a = b + ((a + H(b,c,d) + Mj + ti) << s)
Ⅱ(a,b,c,d,Mj,s,ti)表示 a = b + ((a + I(b,c,d) + Mj + ti) << s)
這四輪(64步)是:
第一輪
FF(a,b,c,d,M0,7,0xd76aa478)
FF(d,a,b,c,M1,12,0xe8c7b756)
FF(c,d,a,b,M2,17,0x242070db)
FF(b,c,d,a,M3,22,0xc1bdceee)
FF(a,b,c,d,M4,7,0xf57c0faf)
FF(d,a,b,c,M5,12,0x4787c62a)
FF(c,d,a,b,M6,17,0xa8304613)
FF(b,c,d,a,M7,22,0xfd469501)
FF(a,b,c,d,M8,7,0x698098d8)
FF(d,a,b,c,M9,12,0x8b44f7af)
FF(c,d,a,b,M10,17,0xffff5bb1)
FF(b,c,d,a,M11,22,0x895cd7be)
FF(a,b,c,d,M12,7,0x6b901122)
FF(d,a,b,c,M13,12,0xfd987193)
FF(c,d,a,b,M14,17,0xa679438e)
FF(b,c,d,a,M15,22,0x49b40821)
第二輪
GG(a,b,c,d,M1,5,0xf61e2562)
GG(d,a,b,c,M6,9,0xc040b340)
GG(c,d,a,b,M11,14,0x265e5a51)
GG(b,c,d,a,M0,20,0xe9b6c7aa)
GG(a,b,c,d,M5,5,0xd62f105d)
GG(d,a,b,c,M10,9,0x02441453)
GG(c,d,a,b,M15,14,0xd8a1e681)
GG(b,c,d,a,M4,20,0xe7d3fbc8)
GG(a,b,c,d,M9,5,0x21e1cde6)
GG(d,a,b,c,M14,9,0xc33707d6)
GG(c,d,a,b,M3,14,0xf4d50d87)
GG(b,c,d,a,M8,20,0x455a14ed)
GG(a,b,c,d,M13,5,0xa9e3e905)
GG(d,a,b,c,M2,9,0xfcefa3f8)
GG(c,d,a,b,M7,14,0x676f02d9)
GG(b,c,d,a,M12,20,0x8d2a4c8a)
第三輪
HH(a,b,c,d,M5,4,0xfffa3942)
HH(d,a,b,c,M8,11,0x8771f681)
HH(c,d,a,b,M11,16,0x6d9d6122)
HH(b,c,d,a,M14,23,0xfde5380c)
HH(a,b,c,d,M1,4,0xa4beea44)
HH(d,a,b,c,M4,11,0x4bdecfa9)
HH(c,d,a,b,M7,16,0xf6bb4b60)
HH(b,c,d,a,M10,23,0xbebfbc70)
HH(a,b,c,d,M13,4,0x289b7ec6)
HH(d,a,b,c,M0,11,0xeaa127fa)
HH(c,d,a,b,M3,16,0xd4ef3085)
HH(b,c,d,a,M6,23,0x04881d05)
HH(a,b,c,d,M9,4,0xd9d4d039)
HH(d,a,b,c,M12,11,0xe6db99e5)
HH(c,d,a,b,M15,16,0x1fa27cf8)
HH(b,c,d,a,M2,23,0xc4ac5665)
第四輪
Ⅱ(a,b,c,d,M0,6,0xf4292244)
Ⅱ(d,a,b,c,M7,10,0x432aff97)
Ⅱ(c,d,a,b,M14,15,0xab9423a7)
Ⅱ(b,c,d,a,M5,21,0xfc93a039)
Ⅱ(a,b,c,d,M12,6,0x655b59c3)
Ⅱ(d,a,b,c,M3,10,0x8f0ccc92)
Ⅱ(c,d,a,b,M10,15,0xffeff47d)
Ⅱ(b,c,d,a,M1,21,0x85845dd1)
Ⅱ(a,b,c,d,M8,6,0x6fa87e4f)
Ⅱ(d,a,b,c,M15,10,0xfe2ce6e0)
Ⅱ(c,d,a,b,M6,15,0xa3014314)
Ⅱ(b,c,d,a,M13,21,0x4e0811a1)
Ⅱ(a,b,c,d,M4,6,0xf7537e82)
Ⅱ(d,a,b,c,M11,10,0xbd3af235)
Ⅱ(c,d,a,b,M2,15,0x2ad7d2bb)
Ⅱ(b,c,d,a,M9,21,0xeb86d391)
所有這些完成之後,將A、B、C、D分別加上a、b、c、d。然後用下一分組數據繼續運行演算法,最後的輸出是A、B、C和D的級聯。
當你按照我上面所說的方法實現MD5演算法以後,你可以用以下幾個信息對你做出來的程序作一個簡單的測試,看看程序有沒有錯誤。
MD5 ("") =
MD5 ("a") =
MD5 ("abc") =
MD5 ("message digest") =
MD5 ("abcdefghijklmnopqrstuvwxyz") =
MD5 ("") =

B. android md5加密一次第二次加密,會怎麼樣

一段信息經過MD5加密之後,形成128位的整數,而且MD5演算法是不可逆的,你經過第一次加密之後,一般情況下不會被破解。經過一次加密,你第二次加密相當於把第一次加密後的整數當成字元串,再次加密之後還是128位。

C. 如果把數字123用MD5加密,結果再加密,一直加密下去會怎麼樣拜託各位了 3Q

MD5是個散列演算法,一定會有沖突的,只不過這個演算法的實際上,讓製造沖突需要花費足夠的時間而已 這么看吧,MD5是一個將值域為無窮范圍映射到一個值域為0~~2^128的范圍,肯定會有沖突 補充: 「安全的雜湊函數在設計時必須滿足兩個要求:其一是尋找兩個輸入得到相同的輸出值在計算上是不可行的,這就是我們通常所說的抗碰撞的;其二是找一個輸入,能得到給定的輸出在計算上是不可行的,即不可從結果推導出它的初始狀態。現在使用的重要計算機安全協議,如SSL,PGP都用雜湊函數來進行簽名,一旦找到兩個文件可以產生相同的壓縮值,就可以偽造簽名,給網路安全領域帶來巨大隱患。 MD5就是這樣一個在國內外有著廣泛的應用的雜湊函數演算法,它曾一度被認為是非常安全的。然而,王小雲教授發現,可以很快的找到MD5的「碰撞」,就是兩個文件可以產生相同的「指紋」。這意味著,當你在網路上使用電子簽名簽署一份合同後,還可能找到另外一份具有相同簽名但內容迥異的合同,這樣兩份合同的真偽性便無從辨別。王小雲教授的研究成果證實了利用MD5演算法的碰撞可以嚴重威脅信息系統安全,這一發現使目前電子簽名的法律效力和技術體系受到挑戰。」 網上的一點資料,希望對你有幫助

D. 2次MD5加密密文怎麼解密

MD5加密碼是不可逆的。沒法解,
暴力破解也只是解一次MD5.

E. 關於MD5加密演算法密碼驗證問題

(恰恰我最近也在研究加密這塊,

我們公司項目的RSA ASE MD5 SHA-1加密方案都是我寫的。

直接拿我分享會上的稿子了)

先回答你的問題:

你的擔心是正確的,

MD5加密的結果值A,是可以由兩個不同的內容B和C得到的

即:期望的正確密碼 a a進行MD5加密的結果

某人輸入了錯誤的密碼x,

x進行特殊的演算法處理,是可以得到 這個MD5值的

————

但是你注意一點,錯誤的密碼數據,必須是通過復雜演算法得到,簡單點稱作「碰撞演算法」。碰撞演算法,其實可以看作是一種偽裝演算法,即,把錯誤的東西偽裝成某個正確東西的MD5值。

至於「碰撞演算法」的原理,可以從MD5加密的原理探知1、2,

MD5加密的過程有四步驟:

  1. 填充 2.初始化變數3. 處理分組數據 4.輸出結果

「碰撞演算法」原理就是在前三步進行「大數據量樣本的填充-試錯-填充試錯-直至得到期望的結果

破解過程中有三點是必須清晰的;

1.大量的正確密碼的樣本

2.採用碰撞演算法

3.事先預知的,破解者期望的正確的結果

三者缺一不可

MD5「碰撞演算法」的示例場景也是在 文件(比如數字簽名)摘要加密上,

即,像密碼學家演示的那樣:

通過演算法,可以得到相同MD5值的A和B (A和B只是代指),這種演算法2004年已經由中國的密碼學家王小雲實現。

但是回到題主擔心的,

非法分子,事先並不知道 張無忌的賬號——正確密碼對應的MD5值,

他只能用「碰撞演算法」去試,隨便編一個假的密碼,用「碰撞演算法」去進行偽裝填充-試錯

但是試的過程就是無數次跟貴公司後台校驗的過程,

在這個過程,貴公司後台應該做了用戶當日最大錯誤密碼次數處理。

所以理論上,不存在一個人,輸入了錯誤的密碼,登錄成功的情況。

假設這個人每天能試5次,使用「碰撞演算法」估計要算好幾輩子了。

——

但是強調一下「MD5碰撞演算法」的應用前提:

  1. 已知的明文以及明文對應的MD5值

  2. 根據1的條件,演算法可以偽裝出 另一個明文以及相同的MD5值

所以,不存在偶爾輸錯了一個密碼,使用MD5加密,湊巧得到了正確密碼的MD5值,這種情況不滿足「碰撞演算法」的條件和前提。

根本不可能。

安全性總結:

對於文件來說碰撞可能容易,但是對於限定長度的密碼或者密文來說,MD5作為一種高性能高安全的數字簽名演算法來說,還是非常實用的

——

綜上 MD5碰撞幾個關注點

  1. 多數情況下,會產生不可視字元,而密碼不可能存在不可視字元的.

  2. 生成"碰撞"的字元,能和你密碼本身長度相等的.基本不可能.


基於上面兩點.只要稍作點文章.就可以防止MD5碰撞了.

1.密碼進行多次MD5加密
2.密碼過濾不過視字元.
3.密碼是定長的.例如:32個字元.用戶不夠的字元,用一固定字元如:空格補充.超長的.一律非法.

————

參考文章

【1】中國密碼學家王小雲2004年提交的破解MD5的演算法

【2】碰撞演算法原理分析

【3】產生MD5碰撞的新的充分條件集

【4】MD5碰撞

F. md5進行多次加密後會很容易破解么

md5「破解」都是通過查庫的方式進行
目前幾乎所有常用的密碼的一次md5、二次md5甚至3次md5的結果都被計算出來存到一個彩虹表裡
這里的破解就是將md5值跟彩虹表裡的哈希結果進行比對,如果相同,找出原始信息
所以一般密碼時可以找出原始值,而不是通過演算法能夠計算原始值,md5是不可逆的,難易程度取決於原始信息的復雜程度(是否在表中,如果在,那麼幾乎是秒破)

G. md5密碼被加密5次怎麼解密 答對了給20分

沒法解密,最少我們普通的市民是沒法解的。據說在某些地方某些領域裡面,MD5早幾年前就被破了,但在市面上沒真正見過能破MD5的軟體或演算法出現。

H. c#如何實現在MD5三次加密

string a; //加密前數據
string b; //1次加密後數據
string c; //2次加密後數據
string d; //3次加密後數據

b=System.Web.Security.FormsAuthentication.(a,"MD5");
c=System.Web.Security.FormsAuthentication.(b,"MD5");
d=System.Web.Security.FormsAuthentication.(c,"MD5");
你是這個意思么?

I. 請問這句PHP的MD5加密代碼是什麼意思 md5(『文本1』 . md5(『文本2』 )) 求

就是你的那段文本使用的是md5的加密方式加密
md5()方法是寫好的
過程你可能不會寫
就這樣用就好了
md5
sha-1是比較安全的加密方式(這些加密方式說著是不可逆,但現在已經被破解,不過沒事,還能用。)

J. MD5怎麼加密多次

在實際項目開發上密碼是MD5加密的話只會是一次。
循環
String md5a="";
for(int i;i>次數;i++){
//在md5a為空的時候在進行第一次加密,不為空為第i次加密
if(md5a==null || "".equals(md5a){
md5a=md5("123");
}else{
md5a=md5(md5a);
}
}

閱讀全文

與md5密碼多次加密相關的資料

熱點內容
小米加密兔手機壁紙 瀏覽:612
2019程序員筆記本 瀏覽:476
武大小孩子厲害的電影有哪些 瀏覽:35
找一個可以看的網址 瀏覽:79
四個字的國外電影,小孩兒 瀏覽:411
推薦看片網站 瀏覽:652
主角叫林飛的小說是什麼 瀏覽:683
閑置伺服器能幹什麼工作 瀏覽:949
asdr q-2299123 瀏覽:987
中國最大尺度古裝電影 瀏覽:695
電影和電視播放器 瀏覽:113
櫻桃小說by小花喵 瀏覽:514
英國看片網站叫什麼名字 瀏覽:676
法蘭克plc編程軟體 瀏覽:359
怎麼看pdf的字體 瀏覽:634
和李采潭合作的女演員有哪些 瀏覽:430
日本那部電影病嬌男主要當女主的狗是校園電影 瀏覽:210
抗日戰爭片400部 瀏覽:730
編程可以賺錢嗎 瀏覽:729
eclipseandroid建立工程 瀏覽:733