最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

教 大 家 口 算 M D 5

2022-05-11 23:50 作者:QAIU喵  | 我要投稿

這篇文章算法部分來自某hub,? 謹(jǐn)做科普, 請(qǐng)勿當(dāng)真


   在MD5算法中,首先需要對(duì)信息進(jìn)行填充,使其字節(jié)長(zhǎng)度對(duì)512求余的結(jié)果等于448。因此,信息的字節(jié)長(zhǎng)度(Bits Length)將被擴(kuò)展至N*512+448,即N*64+56個(gè)字節(jié)(Bytes),N為一個(gè)正整數(shù)。填充的方法如下,在信息的后面填充一個(gè)1和無數(shù)個(gè)0,直到滿足上面的條件時(shí)才停止用0對(duì)信息的填充。然后,在在這個(gè)結(jié)果后面附加一個(gè)以64位二進(jìn)制表示的填充前信息長(zhǎng)度。經(jīng)過這兩步的處理,現(xiàn)在的信息字節(jié)長(zhǎng)度=N*512+448+64=(N+1)*512,即長(zhǎng)度恰好是512的整數(shù)倍。這樣做的原因是為滿足后面處理中對(duì)信息長(zhǎng)度的要求。
   MD5中有四個(gè)32位被稱作鏈接變量(Chaining Variable)的整數(shù)參數(shù),他們分別為:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。
   當(dāng)設(shè)置好這四個(gè)鏈接變量后,就開始進(jìn)入算法的四輪循環(huán)運(yùn)算。循環(huán)的次數(shù)是信息中512位信息分組的數(shù)目。
   將上面四個(gè)鏈接變量復(fù)制到另外四個(gè)變量中:A到a,B到b,C到c,D到d。
   主循環(huán)有四輪(MD4只有三輪),每輪循環(huán)都很相似。第一輪進(jìn)行16次操作。每次操作對(duì)a、b、c和d中的其中三個(gè)作一次非線性函數(shù)運(yùn)算,然后將所得結(jié)果加上第四個(gè)變量,文本的一個(gè)子分組和一個(gè)常數(shù)。再將所得結(jié)果向右環(huán)移一個(gè)不定的數(shù),并加上a、b、c或d中之一。最后用該結(jié)果取代a、b、c或d中之一。
   以一下是每次操作中用到的四個(gè)非線性函數(shù)(每輪一個(gè))。
   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))
   (&是與,|是或,~是非,^是異或)
   這四個(gè)函數(shù)的說明:如果X、Y和Z的對(duì)應(yīng)位是獨(dú)立和均勻的,那么結(jié)果的每一位也應(yīng)是獨(dú)立和均勻的。
   F是一個(gè)逐位運(yùn)算的函數(shù)。即,如果X,那么Y,否則Z。函數(shù)H是逐位奇偶操作符。
   假設(shè)Mj表示消息的第j個(gè)子分組(從0到15),<<
   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
   II(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)
   第四輪
   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ù)運(yùn)行算法,最后的輸出是A、B、C和D的級(jí)聯(lián)。
   當(dāng)你按照我上面所說的方法實(shí)現(xiàn)MD5算法以后,你可以用以下幾個(gè)信息對(duì)你做出來的程序作一個(gè)簡(jiǎn)單的測(cè)試,看看程序有沒有錯(cuò)誤。
   MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
   MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
   MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
   MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
   MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
   MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") =
   d174ab98d277d9f5a5611c2c9f419d9f


手機(jī)編程知識(shí)分享: https://qaiu.top

教 大 家 口 算 M D 5的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
神池县| 延庆县| 西青区| 湖口县| 广河县| 郸城县| 子洲县| 雅安市| 时尚| 横峰县| 徐汇区| 易门县| 凌源市| 德阳市| 兴仁县| 常德市| 苏尼特左旗| 贡嘎县| 大同县| 湟中县| 中山市| 大关县| 思茅市| 开封市| 嘉鱼县| 马尔康县| 米脂县| 宁津县| 普宁市| 崇礼县| 吉安县| 页游| 莱芜市| 闸北区| 衡阳市| 永嘉县| 介休市| 泗水县| 本溪| 长葛市| 晋州市|