青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

bilicon

比你狂繼續(xù)學習中

統(tǒng)計

留言簿(1)

閱讀排行榜

評論排行榜

[zt]MD5算法原理

綜述
    
    md5的全稱是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest開發(fā)出來,經(jīng)md2、md3和md4發(fā)展而來。它的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密匙前被"壓縮"成一種保密的格式(就是把一個任意長度的字節(jié)串變換成一定長的大整數(shù))。不管是md2、md4還是md5,它們都需要獲得一個隨機長度的信息并產(chǎn)生一個128位的信息摘要。雖然這些算法的結構或多或少有些相似,但md2的設計與md4和md5完全不同,那是因為md2是為8位機器做過設計優(yōu)化的,而md4和md5卻是面向32位的電腦。這三個算法的描述和c語言源代碼在internet rfcs 1321中有詳細的描述(http://www.ietf.org/rfc/rfc1321.txt),這是一份最權威的文檔,由ronald l. rivest在1992年8月向ieft提交。
    
    rivest在1989年開發(fā)出md2算法。在這個算法中,首先對信息進行數(shù)據(jù)補位,使信息的字節(jié)長度是16的倍數(shù)。然后,以一個16位的檢驗和追加到信息末尾。并且根據(jù)這個新產(chǎn)生的信息計算出散列值。后來,rogier和chauvaud發(fā)現(xiàn)如果忽略了檢驗和將產(chǎn)生md2沖突。md2算法的加密后結果是唯一的--既沒有重復。
    
    為了加強算法的安全性,rivest在1990年又開發(fā)出md4算法。md4算法同樣需要填補信息以確保信息的字節(jié)長度加上448后能被512整除(信息字節(jié)長度mod 512 = 448)。然后,一個以64位二進制表示的信息的最初長度被添加進來。信息被處理成512位damg?rd/merkle迭代結構的區(qū)塊,而且每個區(qū)塊要通過三個不同步驟的處理。den boer和bosselaers以及其他人很快的發(fā)現(xiàn)了攻擊md4版本中第一步和第三步的漏洞。dobbertin向大家演示了如何利用一部普通的個人電腦在幾分鐘內(nèi)找到md4完整版本中的沖突(這個沖突實際上是一種漏洞,它將導致對不同的內(nèi)容進行加密卻可能得到相同的加密后結果)。毫無疑問,md4就此被淘汰掉了。
    
    盡管md4算法在安全上有個這么大的漏洞,但它對在其后才被開發(fā)出來的好幾種信息安全加密算法的出現(xiàn)卻有著不可忽視的引導作用。除了md5以外,其中比較有名的還有sha-1、ripe-md以及haval等。
    
    一年以后,即1991年,rivest開發(fā)出技術上更為趨近成熟的md5算法。它在md4的基礎上增加了"安全-帶子"(safety-belts)的概念。雖然md5比md4稍微慢一些,但卻更為安全。這個算法很明顯的由四個和md4設計有少許不同的步驟組成。在md5算法中,信息-摘要的大小和填充的必要條件與md4完全相同。den boer和bosselaers曾發(fā)現(xiàn)md5算法中的假沖突(pseudo-collisions),但除此之外就沒有其他被發(fā)現(xiàn)的加密后結果了。
    
    van oorschot和wiener曾經(jīng)考慮過一個在散列中暴力搜尋沖突的函數(shù)(brute-force hash function),而且他們猜測一個被設計專門用來搜索md5沖突的機器(這臺機器在1994年的制造成本大約是一百萬美元)可以平均每24天就找到一個沖突。但單從1991年到2001年這10年間,竟沒有出現(xiàn)替代md5算法的md6或被叫做其他什么名字的新算法這一點,我們就可以看出這個瑕疵并沒有太多的影響md5的安全性。上面所有這些都不足以成為md5的在實際應用中的問題。并且,由于md5算法的使用不需要支付任何版權費用的,所以在一般的情況下(非絕密應用領域。但即便是應用在絕密領域內(nèi),md5也不失為一種非常優(yōu)秀的中間技術),md5怎么都應該算得上是非常安全的了。 
    
算法的應用
    
    md5的典型應用是對一段信息(message)產(chǎn)生信息摘要(message-digest),以防止被篡改。比如,在unix下有很多軟件在下載的時候都有一個文件名相同,文件擴展名為.md5的文件,在這個文件中通常只有一行文本,大致結構如:
    
    md5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461
    
    這就是tanajiya.tar.gz文件的數(shù)字簽名。md5將整個文件當作一個大文本信息,通過其不可逆的字符串變換算法,產(chǎn)生了這個唯一的md5信息摘要。如果在以后傳播這個文件的過程中,無論文件的內(nèi)容發(fā)生了任何形式的改變(包括人為修改或者下載過程中線路不穩(wěn)定引起的傳輸錯誤等),只要你對這個文件重新計算md5時就會發(fā)現(xiàn)信息摘要不相同,由此可以確定你得到的只是一個不正確的文件。如果再有一個第三方的認證機構,用md5還可以防止文件作者的"抵賴",這就是所謂的數(shù)字簽名應用。
    
    md5還廣泛用于加密和解密技術上。比如在unix系統(tǒng)中用戶的密碼就是以md5(或其它類似的算法)經(jīng)加密后存儲在文件系統(tǒng)中。當用戶登錄的時候,系統(tǒng)把用戶輸入的密碼計算成md5值,然后再去和保存在文件系統(tǒng)中的md5值進行比較,進而確定輸入的密碼是否正確。通過這樣的步驟,系統(tǒng)在并不知道用戶密碼的明碼的情況下就可以確定用戶登錄系統(tǒng)的合法性。這不但可以避免用戶的密碼被具有系統(tǒng)管理員權限的用戶知道,而且還在一定程度上增加了密碼被破解的難度。
    
    正是因為這個原因,現(xiàn)在被黑客使用最多的一種破譯密碼的方法就是一種被稱為"跑字典"的方法。有兩種方法得到字典,一種是日常搜集的用做密碼的字符串表,另一種是用排列組合方法生成的,先用md5程序計算出這些字典項的md5值,然后再用目標的md5值在這個字典中檢索。我們假設密碼的最大長度為8位字節(jié)(8 bytes),同時密碼只能是字母和數(shù)字,共26+26+10=62個字符,排列組合出的字典的項數(shù)則是p(62,1)+p(62,2)….+p(62,8),那也已經(jīng)是一個很天文的數(shù)字了,存儲這個字典就需要tb級的磁盤陣列,而且這種方法還有一個前提,就是能獲得目標賬戶的密碼md5值的情況下才可以。這種加密技術被廣泛的應用于unix系統(tǒng)中,這也是為什么unix系統(tǒng)比一般操作系統(tǒng)更為堅固一個重要原因。 
    
算法描述
    
    對md5算法簡要的敘述可以為:md5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經(jīng)過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯(lián)后將生成一個128位散列值。
    
    在md5算法中,首先需要對信息進行填充,使其字節(jié)長度對512求余的結果等于448。因此,信息的字節(jié)長度(bits length)將被擴展至n*512+448,即n*64+56個字節(jié)(bytes),n為一個正整數(shù)。填充的方法如下,在信息的后面填充一個1和無數(shù)個0,直到滿足上面的條件時才停止用0對信息的填充。然后,在在這個結果后面附加一個以64位二進制表示的填充前信息長度。經(jīng)過這兩步的處理,現(xiàn)在的信息字節(jié)長度=n*512+448+64=(n+1)*512,即長度恰好是512的整數(shù)倍。這樣做的原因是為滿足后面處理中對信息長度的要求。
    
    md5中有四個32位被稱作鏈接變量(chaining variable)的整數(shù)參數(shù),他們分別為:a=0x01234567,b=0x89abcdef,c=0xfedcba98,d=0x76543210。
    
    當設置好這四個鏈接變量后,就開始進入算法的四輪循環(huán)運算。循環(huán)的次數(shù)是信息中512位信息分組的數(shù)目。
    
    將上面四個鏈接變量復制到另外四個變量中:a到a,b到b,c到c,d到d。
    
    主循環(huán)有四輪(md4只有三輪),每輪循環(huán)都很相似。第一輪進行16次操作。每次操作對a、b、c和d中的其中三個作一次非線性函數(shù)運算,然后將所得結果加上第四個變量,文本的一個子分組和一個常數(shù)。再將所得結果向右環(huán)移一個不定的數(shù),并加上a、b、c或d中之一。最后用該結果取代a、b、c或d中之一。
    以一下是每次操作中用到的四個非線性函數(shù)(每輪一個)。
    
    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))
    (&是與,|是或,~是非,^是異或)
    
    這四個函數(shù)的說明:如果x、y和z的對應位是獨立和均勻的,那么結果的每一位也應是獨立和均勻的。
    f是一個逐位運算的函數(shù)。即,如果x,那么y,否則z。函數(shù)h是逐位奇偶操作符。
    
    假設mj表示消息的第j個子分組(從0到15),<<
    ff(a,b,c,d,mj,s,ti)表示a=b+((a+(f(b,c,d)+mj+ti)<< gg(a,b,c,d,mj,s,ti)表示a=b+((a+(g(b,c,d)+mj+ti)<< hh(a,b,c,d,mj,s,ti)表示a=b+((a+(h(b,c,d)+mj+ti)<< ii(a,b,c,d,mj,s,ti)表示a=b+((a+(i(b,c,d)+mj+ti)<<
    這四輪(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)
    
    第四輪
    
    ii(a,b,c,d,m0,6,0xf4292244)
    ii(d,a,b,c,m7,10,0x432aff97)
    ii(c,d,a,b,m14,15,0xab9423a7)
    ii(b,c,d,a,m5,21,0xfc93a039)
    ii(a,b,c,d,m12,6,0x655b59c3)
    ii(d,a,b,c,m3,10,0x8f0ccc92)
    ii(c,d,a,b,m10,15,0xffeff47d)
    ii(b,c,d,a,m1,21,0x85845dd1)
    ii(a,b,c,d,m8,6,0x6fa87e4f)
    ii(d,a,b,c,m15,10,0xfe2ce6e0)
    ii(c,d,a,b,m6,15,0xa3014314)
    ii(b,c,d,a,m13,21,0x4e0811a1)
    ii(a,b,c,d,m4,6,0xf7537e82)
    ii(d,a,b,c,m11,10,0xbd3af235)
    ii(c,d,a,b,m2,15,0x2ad7d2bb)
    ii(b,c,d,a,m9,21,0xeb86d391)
    
    常數(shù)ti可以如下選擇:
    
    在第i步中,ti是4294967296*abs(sin(i))的整數(shù)部分,i的單位是弧度。(4294967296等于2的32次方)
    所有這些完成之后,將a、b、c、d分別加上a、b、c、d。然后用下一分組數(shù)據(jù)繼續(xù)運行算法,最后的輸出是a、b、c和d的級聯(lián)。
    
    當你按照我上面所說的方法實現(xiàn)md5算法以后,你可以用以下幾個信息對你做出來的程序作一個簡單的測試,看看程序有沒有錯誤。
    
    md5 ("") = d41d8cd98f00b204e9800998ecf8427e
    md5 ("a") = 0cc175b9c0f1b6a831c399e269772661
    md5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
    md5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
    md5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
    md5 ("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789") =
    d174ab98d277d9f5a5611c2c9f419d9f
    md5 ("123456789012345678901234567890123456789012345678901234567890123456789
    01234567890") = 57edf4a22be3c955ac49da2e2107b67a
    
    如果你用上面的信息分別對你做的md5算法實例做測試,最后得出的結論和標準答案完全一樣,那我就要在這里象你道一聲祝賀了。要知道,我的程序在第一次編譯成功的時候是沒有得出和上面相同的結果的。 
    
    
md5的安全性
    
    md5相對md4所作的改進:     
    1. 增加了第四輪;     
    2. 每一步均有唯一的加法常數(shù);    
    3. 為減弱第二輪中函數(shù)g的對稱性從(x&y)|(x&z)|(y&z)變?yōu)?x&z)|(y&(~z));    
    4. 第一步加上了上一步的結果,這將引起更快的雪崩效應;     
    5. 改變了第二輪和第三輪中訪問消息子分組的次序,使其更不相似;     
    6. 近似優(yōu)化了每一輪中的循環(huán)左移位移量以實現(xiàn)更快的雪崩效應。各輪的位移量互不相同。 

posted on 2007-08-03 12:34 bilicon 閱讀(279) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品首页| 久久精品亚洲精品国产欧美kt∨| 亚洲图片在线| 亚洲黄页一区| 亚洲第一福利在线观看| 久久在线视频| 欧美成人国产| 久久综合中文字幕| 免费成人黄色片| 欧美 日韩 国产 一区| 欧美一级欧美一级在线播放| 中文精品视频一区二区在线观看| 亚洲福利视频二区| 亚洲大胆人体视频| 亚洲免费观看视频| 欧美激情久久久久| 亚洲国产欧美久久| 99在线热播精品免费99热| 亚洲精品中文字幕在线| 一本大道久久a久久综合婷婷| 最新中文字幕亚洲| 亚洲综合第一页| 午夜亚洲影视| 欧美jizz19hd性欧美| 国产精品国产三级国产aⅴ无密码| 国产一区二区成人久久免费影院| 国产一区白浆| 久久影院午夜片一区| 欧美在线电影| 国产亚洲欧美一区二区三区| 午夜精品偷拍| 小黄鸭视频精品导航| 精品51国产黑色丝袜高跟鞋| 蜜桃伊人久久| 欧美三级日本三级少妇99| 亚洲欧美日韩国产| 欧美永久精品| 一本一本久久a久久精品综合妖精| 亚洲欧洲久久| 国产欧美日韩视频一区二区| 久久婷婷影院| 欧美日韩一区二区三区在线视频| 亚洲一区精彩视频| 毛片一区二区三区| 久久av一区二区| 欧美精品一级| 欧美激情精品久久久久久变态| 欧美色视频一区| 欧美激情亚洲综合一区| 欧美成人午夜剧场免费观看| 欧美国产国产综合| 久久综合中文色婷婷| 国产精品入口夜色视频大尺度| 美国成人直播| 国产一区二区成人| 亚洲欧美日韩国产成人| 亚洲欧美日韩视频一区| 欧美精品九九| 亚洲国产精品一区二区第四页av| 国产性天天综合网| 亚洲永久免费| 欧美一级一区| 国产亚洲成精品久久| 亚洲免费小视频| 久久精品国产69国产精品亚洲| 国产精品久久久久久模特| 一区二区激情视频| 欧美一区影院| 在线成人av.com| 性欧美大战久久久久久久免费观看 | 亚洲天堂成人| 久久理论片午夜琪琪电影网| 中文欧美字幕免费| 蜜臀久久99精品久久久久久9| 久久蜜桃av一区精品变态类天堂| 欧美日韩高清在线观看| 久久一本综合频道| 国产婷婷色一区二区三区在线| 亚洲午夜性刺激影院| 亚洲一区二区三区色| 欧美日韩国产123| 亚洲香蕉伊综合在人在线视看| 午夜亚洲福利在线老司机| 欧美性大战久久久久| 国产日韩欧美电影在线观看| 蜜乳av另类精品一区二区| 国产日韩免费| 欧美成人午夜77777| 一区二区三区欧美激情| 午夜精品视频在线观看| 国产精品人人做人人爽| 欧美一区二区三区久久精品茉莉花| 久久久夜精品| 亚洲一区二区三区高清不卡| 国产免费观看久久黄| 欧美一区二区三区久久精品茉莉花| 久久久精品久久久久| 亚洲精品少妇| 国产亚洲精品bt天堂精选| 欧美日本国产| 欧美一区二区在线免费观看| 亚洲国产导航| 玖玖国产精品视频| 性欧美办公室18xxxxhd| 亚洲第一区中文99精品| 国产精品网曝门| 国产精品xvideos88| 欧美成人蜜桃| 久久久一区二区三区| 欧美一级视频一区二区| 亚洲男人av电影| 午夜精品网站| 午夜精品福利视频| 中国成人亚色综合网站| 亚洲另类黄色| 99视频精品全部免费在线| 亚洲第一久久影院| 亚洲免费观看高清完整版在线观看| 欧美国产第二页| 亚洲电影自拍| 亚洲午夜久久久久久久久电影院 | 美女脱光内衣内裤视频久久影院 | 亚洲欧美在线视频观看| 欧美成人一区二区三区在线观看| 久久人人爽人人| 欧美成人在线网站| 一本色道久久综合亚洲精品小说| 亚洲精品三级| 久久av免费一区| 欧美高清免费| 国产一区观看| 亚洲欧美精品伊人久久| 久久精品99久久香蕉国产色戒| 午夜精品福利一区二区蜜股av| 免费久久99精品国产自在现线| 亚洲激情成人在线| 日韩午夜电影| 欧美一区免费| 狠狠色丁香婷婷综合久久片| 国产日产高清欧美一区二区三区| 欧美亚洲日本一区| 欧美视频在线看| 中文欧美字幕免费| 中文国产成人精品久久一| 欧美日韩一区在线| 亚洲网在线观看| 亚洲一区二区黄| 国产伦精品一区| 久久麻豆一区二区| 久久影院午夜片一区| 亚洲精品国产精品国产自| 亚洲精品国产精品国自产观看浪潮| 老司机久久99久久精品播放免费| 欧美成人免费大片| 香蕉免费一区二区三区在线观看| 91久久综合| 欧美中日韩免费视频| 亚洲欧美bt| 久久亚洲精品伦理| 亚洲黄色片网站| 日韩视频免费看| 欧美亚洲一级片| 老司机午夜精品视频| 欧美91精品| 欧美二区在线看| 欧美精品首页| 国产精品午夜av在线| 精品1区2区3区4区| 亚洲一卡二卡三卡四卡五卡| 香蕉久久a毛片| 亚洲第一精品夜夜躁人人躁| 亚洲视频免费看| 久久精品国产第一区二区三区最新章节 | 国产欧美在线观看| 国产视频一区二区在线观看 | 久久久久国产精品厨房| 欧美在线视频在线播放完整版免费观看| 欧美激情精品久久久久久| 国产精品久久福利| 夜夜躁日日躁狠狠久久88av| 久久久www免费人成黑人精品 | 久久成人综合视频| 美女精品一区| 亚洲一区二区毛片| 国产乱码精品| 免费成人在线视频网站| 亚洲美女精品一区| 久久精品日产第一区二区| 亚洲精品国产日韩| 136国产福利精品导航网址| 国产日韩欧美精品| 久久亚洲一区二区| 亚洲一级黄色| 欧美成人亚洲成人| 久久国产精品久久久久久久久久| 亚洲欧洲一区二区三区| 国产午夜精品美女视频明星a级| 欧美黄色视屏| 久久婷婷国产综合精品青草| 亚洲一区在线播放|