| | md5 de quán chēng shì message-digestalgorithm5( xìn xī - zhāi yào suàn fǎ), zài 90 nián dài chū yóu mitlaboratoryforcomputerscience hé rsadatasecurityinc de ronaldl.rivest kāi fā chū lái, jīng md2、 md3 hé md4 fā zhǎn 'ér lái。 tā de zuò yòng shì ràng dà róng liàng xìn xī zài yòng shù zì qiān míng ruǎn jiàn qiān shǔ sī rén mì chí qián bèi " yā suō " chéng yī zhǒng bǎo mì de gé shì( jiù shì bǎ yī gè rèn yì cháng dù de zì jié chuàn biàn huàn chéng yī dìng cháng de dà zhěng shù)。 bù guǎn shì md2、 md4 hái shì md5, tā mendōu xū yào huò dé yī gè suí jī cháng dù de xìn xī bìng chǎn shēng yī gè 128 wèi de xìn xī zhāi yào。 suī rán zhè xiē suàn fǎ de jié gòu huò duō huò shǎo yòu xiē xiāng sì, dàn md2 de shè jì yǔ md4 hé md5 wán quán bù tóng, nà shì yīn wéi md2 shì wéi 8 wèi jī qì zuò guò shè jì yōu huà de, ér md4 hé md5 què shì miàn xiàng 32 wèi de diàn nǎo。 zhè sān gè suàn fǎ de miáo shù hé c yǔ yán yuán dài mǎ zài internetrfcs1321 zhōng yòu xiáng xì de miáo shù( http://www.ietf.org/rfc/rfc1321.txt), zhè shì yī fèn zuì quán wēi de wén dàng, yóu ronaldl.rivest zài 1992 nián 8 yuè xiàng ieft tí jiāo。
vanoorschot hé wiener céng jīng kǎo lǜ guò yī gè zài sàn liè zhōng bào lì sōu xún chōng tū de hán shù( brute-forcehashfunction), ér qiě tā men cāi cè yī gè bèi shè jì zhuān mén yòng lái sōu suǒ md5 chōng tū de jī qì( zhè tái jī qì zài 1994 nián de zhì zào chéng běn dà yuē shì yī bǎi wàn měi yuán) kě yǐ píng jūn měi 24 tiān jiù zhǎo dào yī gè chōng tū。 dàn dān cóng 1991 nián dào 2001 nián zhè 10 nián jiān, jìng méi yòu chū xiàn tì dài md5 suàn fǎ de md6 huò bèi jiào zuò qí tā shénme míng zì de xīn suàn fǎ zhè yī diǎn, wǒ men jiù kě yǐ kàn chū zhè gè xiá cī bìng méi yòu tài duō de yǐng xiǎng md5 de 'ān quán xìng。 shàng miàn suǒ yòu zhè xiē dōubù zú yǐ chéng wéi md5 de zài shí jì yìng yòng zhōng de wèn tí。 bìng qiě, yóu yú md5 suàn fǎ de shǐ yòng bù xū yào zhī fù rèn hé bǎn quán fèi yòng de, suǒ yǐ zài yī bān de qíng kuàng xià( fēi jué mì yìng yòng lǐng yù。 dàn jí biàn shì yìng yòng zài jué mì lǐng yù nèi, md5 yě bù shī wéi yī zhǒng fēi cháng yōu xiù de zhōng jiān jì shù), md5 zěn me dū yìng gāi suàn dé shàng shì fēi cháng 'ān quán de liǎo。
suàn fǎ de yìng yòng
md5 de diǎn xíng yìng yòng shì duì yī duàn xìn xī( message) chǎn shēng xìn xī zhāi yào( message-digest), yǐ fáng zhǐ bèi cuàn gǎi。 bǐ rú, zài unix xià yòu hěn duō ruǎn jiàn zài xià zài de shí hòu dōuyòu yī gè wén jiàn míng xiāng tóng, wén jiàn kuò zhǎn míng wéi .md5 de wén jiàn, zài zhè gè wén jiàn zhōng tōng cháng zhǐ yòu yīháng wén běn, dà zhì jié gòu rú:
md5(tanajiya.tar.gz)=0ca175b9c0f726a831d895e269332461
zhè jiù shì tanajiya.tar.gz wén jiàn de shù zì qiān míng。 md5 jiāng zhěng gè wén jiàn dāng zuò yī gè dà wén běn xìn xī, tōng guò qí bù kě nì de zì fú chuàn biàn huàn suàn fǎ, chǎn shēng liǎo zhè gè wéi yī de md5 xìn xī zhāi yào。 rú guǒ zài yǐ hòu chuán bō zhè gè wén jiàn de guò chéng zhōng, wú lùn wén jiàn de nèi róng fā shēng liǎo rèn hé xíng shì de gǎi biàn( bāo kuò rén wéi xiū gǎi huò zhě xià zài guò chéng zhōng xiàn lù bù wěn dìng yǐn qǐ de chuán shū cuò wù děng), zhǐ yào nǐ duì zhè gè wén jiàn chóngxīn jì suàn md5 shí jiù huì fā xiàn xìn xī zhāi yào bù xiāng tóng, yóu cǐ kě yǐ què dìng nǐ dé dào de zhǐ shì yī gè bù zhèng què de wén jiàn。 rú guǒ zài yòu yī gè dì sān fāng de rèn zhèng jī gòu, yòng md5 hái kě yǐ fáng zhǐ wén jiàn zuò zhě de " dǐ lài ", zhè jiù shì suǒ wèi de shù zì qiān míng yìng yòng。
md5 hái guǎng fàn yòng yú jiā mì hé jiě mì jì shù shàng。 bǐ rú zài unix xì tǒng zhōng yòng hù de mì mǎ jiù shì yǐ md5( huò qí tā lèi shìde suàn fǎ) jīng jiā mì hòu cún chǔ zài wén jiàn xì tǒng zhōng。 dāng yòng hù dēng lù de shí hòu, xì tǒng bǎ yòng hù shū rù de mì mǎ jì suàn chéng md5 zhí, rán hòu zài qù hé bǎo cún zài wén jiàn xì tǒng zhōng de md5 zhí jìn xíng bǐ jiào, jìn 'ér què dìng shū rù de mì mǎ shì fǒu zhèng què。 tōng guò zhè yàng de bù zhòu, xì tǒng zài bìng bù zhī dào yòng hù mì mǎ de míng mǎ de qíng kuàng xià jiù kě yǐ què dìng yòng hù dēng lù xì tǒng de hé fǎ xìng。 zhè bù dàn kě yǐ bì miǎn yòng hù de mì mǎ bèi jù yòu xì tǒng guǎn lǐ yuán quán xiàn de yòng hù zhī dào, ér qiě hái zài yī dìng chéng dù shàng zēng jiā liǎo mì mǎ bèi pò jiě de nán dù。
zhèng shì yīn wéi zhè gè yuán yīn, xiàn zài bèi hēi kè shǐ yòng zuì duō de yī zhǒng pò yì mì mǎ de fāng fǎ jiù shì yī zhǒng bèi chēng wéi " páo zì diǎn " de fāng fǎ。 yòu liǎng zhǒng fāng fǎ dé dào zì diǎn, yī zhǒng shì rì cháng sōu jí de yòng zuò mì mǎ de zì fú chuàn biǎo, lìng yī zhǒng shì yòng pái liè zǔ hé fāng fǎ shēng chéng de, xiān yòng md5 chéng xù jì suàn chū zhè xiē zì diǎn xiàng de md5 zhí, rán hòu zài yòng mù biāo de md5 zhí zài zhè gè zì diǎn zhōng jiǎn suǒ。 wǒ men jiǎ shè mì mǎ de zuì dà cháng dù wéi 8 wèi zì jié( 8bytes), tóng shí mì mǎ zhǐ néng shì zì mǔ hé shù zì, gòng 26+26+10=62 gè zì fú, pái liè zǔ hé chū de zì diǎn de xiàng shù zé shì p(62,1)+p(62,2) … .+p(62,8), nà yě yǐ jīng shì yī gè hěn tiān wén de shù zì liǎo, cún chǔ zhè gè zì diǎn jiù xū yào tb jí de cí pán zhèn liè, ér qiě zhè zhǒng fāng fǎ hái yòu yī gè qián tí, jiù shì néng huò dé mù biāo zhàng hù de mì mǎ md5 zhí de qíng kuàng xià cái kě yǐ。 zhè zhǒng jiā mì jì shù bèi guǎng fàn de yìng yòng yú unix xì tǒng zhōng, zhè yě shì wèishénme unix xì tǒng bǐ yī bān cāo zuò xì tǒng gèng wéi jiān gù yī gè zhòng yào yuán yīn。
suàn fǎ miáo shù
duì md5 suàn fǎ jiǎn yào de xù shù kě yǐ wéi: md5 yǐ 512 wèi fēn zǔ lái chù lǐ shū rù de xìn xī, qiě měi yī fēn zǔ yòu bèi huàfēn wéi 16 gè 32 wèi zǐ fēn zǔ, jīng guò liǎo yī xì liè de chǔlǐ hòu, suàn fǎ de shū chū yóu sì gè 32 wèi fēn zǔ zǔ chéng, jiāng zhè sì gè 32 wèi fēn zǔ jí lián hòu jiāng shēng chéng yī gè 128 wèi sàn liè zhí。
zài md5 suàn fǎ zhōng, shǒu xiān xū yào duì xìn xī jìn xíng tián chōng, shǐ qí zì jié cháng dù duì 512 qiú yú de jiēguǒ děng yú 448。 yīn cǐ, xìn xī de zì jié cháng dù( bitslength) jiāng bèi kuò zhǎn zhì n*512+448, jí n*64+56 gè zì jié( bytes), n wéi yī gè zhèng zhěng shù。 tián chōng de fāng fǎ rú xià, zài xìn xī de hòu miàn tián chōng yī gè 1 hé wú shù gè 0, zhí dào mǎn zú shàng miàn de tiáo jiàn shí cái tíng zhǐ yòng 0 duì xìn xī de tián chōng。 rán hòu, zài zài zhè gè jiēguǒ hòu miàn fù jiā yī gè yǐ 64 wèi 'èr jìn zhì biǎo shì de tián chōng qián xìn xī cháng dù。 jīng guò zhè liǎng bù de chǔlǐ, xiàn zài de xìn xī zì jié cháng dù =n*512+448+64=(n+1)*512, jí cháng dù qià hǎo shì 512 de zhěng shù bèi。 zhè yàng zuò de yuán yīn shì wéi mǎn zú hòu miàn chǔlǐ zhōng duì xìn xī cháng dù de yào qiú。
md5 zhōng yòu sì gè 32 wèi bèi chēng zuò liàn jiē biàn liàng( chainingvariable) de zhěng shù cān shù, tā men fēn bié wéi: a=0x01234567, b=0x89abcdef, c=0xfedcba98, d=0x76543210。
dāng shè zhì hǎo zhè sì gè liàn jiē biàn liàng hòu, jiù kāi shǐ jìn rù suàn fǎ de sì lún xún huán yùn suàn。 xún huán de cì shù shì xìn xī zhōng 512 wèi xìn xī fēn zǔ de shù mù。
jiāng shàng miàn sì gè liàn jiē biàn liàng fù zhì dào lìng wài sì gè biàn liàng zhōng: a dào a, b dào b, c dào c, d dào d。
zhù xún huán yòu sì lún( md4 zhǐ yòu sān lún), měi lún xún huán dōuhěn xiāng sì。 dì yī lún jìn xíng 16 cì cāo zuò。 měi cì cāo zuò duì a、 b、 c hé d zhōng de qí zhōng sān gè zuò yī cì fēi xiàn xìng hán shù yùn suàn, rán hòu jiāng suǒ dé jiēguǒ jiā shàng dì sì gè biàn liàng, wén běn de yī gè zǐ fēn zǔ hé yī gè cháng shù。 zài jiāng suǒ dé jiēguǒ xiàng yòu huán yí yī gè bù dìng de shù, bìng jiā shàng a、 b、 c huò d zhōng zhī yī。 zuì hòu yòng gāi jiēguǒ qǔ dài a、 b、 c huò d zhōng zhī yī。
yǐ yī xià shì měi cì cāo zuò zhōng yòng dào de sì gè fēi xiàn xìng hán shù( měi lún yī 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))
( & shì yǔ, | shì huò, ~ shì fēi, ^ shì yì huò)
zhè sì gè hán shù de shuō míng: rú guǒ x、 y hé z de duì yìng wèi shì dú lì hé jūn yún de, nà me jiēguǒ de měi yī wèi yě yìng shì dú lì hé jūn yún de。 f shì yī gè zhú wèi yùn suàn de hán shù。 jí, rú guǒ x, nà me y, fǒu zé z。 hán shù h shì zhú wèi jī'ǒu cāo zuò fú。
jiǎ shè mj biǎo shì xiāo xī de dì j gè zǐ fēn zǔ( cóng 0 dào 15), <<
ff(a,b,c,d,mj,s,ti) biǎo shì a=b+((a+(f(b,c,d)+mj+ti)<< gg(a,b,c,d,mj,s,ti) biǎo shì a=b+((a+(g(b,c,d)+mj+ti)<< hh(a,b,c,d,mj,s,ti) biǎo shì a=b+((a+(h(b,c,d)+mj+ti)<< ii(a,b,c,d,mj,s,ti) biǎo shì a=b+((a+(i(b,c,d)+mj+ti)<<
zhè sì lún( 64 bù) shì:
dì yī lún
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)
dì 'èr lún
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)
dì sān lún
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)
dì sì lún
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)
cháng shù ti kě yǐ rú xià xuǎn zé:
zài dì i bù zhōng, ti shì 4294967296*abs(sin(i)) de zhěng shù bù fēn, i de dān wèi shì hú dù。 (4294967296 děng yú 2 de 32 cì fāng )
suǒ yòu zhè xiē wán chéng zhī hòu, jiāng a、 b、 c、 d fēn bié jiā shàng a、 b、 c、 d。 rán hòu yòng xià yī fēn zǔ shù jù jì xù yùn xíng suàn fǎ, zuì hòu de shū chū shì a、 b、 c hé d de jí lián。
dāng nǐ 'àn zhào wǒ shàng miàn suǒ shuō de fāng fǎ shí xiàn md5 suàn fǎ yǐ hòu, nǐ kě yǐ yòng yǐ xià jǐ gè xìn xī duì nǐ zuò chū lái de chéng xù zuò yī gè jiǎn dān de cè shì, kàn kàn chéng xù yòu méi yòu cuò wù。
md5("")=d41d8cd98f00b204e9800998ecf8427e
md5("a")=0cc175b9c0f1b6a831c399e269772661
md5("abc")=900150983cd24fb0d6963f7d28e17f72
md5("messagedigest")=f96b697d7cb7938d525a2f31aaf161d0
md5("abcdefghijklmnopqrstuvwxyz")=c3fcd3d76192e4007dfb496cca67e13b
md5("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789")=
d174ab98d277d9f5a5611c2c9f419d9f
md5("123456789012345678901234567890123456789012345678901234567890123456789
01234567890")=57edf4a22be3c955ac49da2e2107b67a
md5 de 'ān quán xìng
md5 xiāng duì md4 suǒ zuò de gǎi jìn:
1. zēng jiā liǎo dì sì lún;
2. měi yī bù jūn yòu wéi yī de jiā fǎ cháng shù;
3. wéi jiǎn ruò dì 'èr lún zhōng hán shù g de duìchèn xìng cóng (x&y)|(x&z)|(y&z) biàn wéi (x&z)|(y&(~z));
4. dì yī bù jiā shàng liǎo shàng yī bù de jiēguǒ, zhè jiāng yǐn qǐ gèng kuài de xuě bēng xiào yìng;
5. gǎi biàn liǎo dì 'èr lún hé dì sān lún zhōng fǎng wèn xiāo xī zǐ fēn zǔ de cì xù, shǐ qí gèng bù xiāng sì;
6. jìn sì yōu huà liǎo měi yī lún zhōng de xún huán zuǒ yí wèi yí liàng yǐ shí xiàn gèng kuài de xuě bēng xiào yìng。 gè lún de wèi yí liàng hù bù xiāng tóng。 | | MD5 de quán chēng shì Message-DigestAlgorithm5( xìn xī - zhāi yào suàn fǎ), zài 90 nián dài chū yóu MITLaboratoryforComputerScience hé RSADataSecurityInc de RonaldL.Rivest kāi fā chū lái, jīng MD2、 MD3 hé MD4 fā zhǎn 'ér lái。 tā de zuò yòng shì ràng dà róng liàng xìn xī zài yòng shù zì qiān míng ruǎn jiàn qiān shǔ sī rén mì chí qián bèi " yā suō " chéng yī zhǒng bǎo mì de gé shì( jiù shì bǎ yī gè rèn yì cháng dù de zì jié chuàn biàn huàn chéng yī dìng cháng de dà zhěng shù)。 bù guǎn shì MD2、 MD4 hái shì MD5, tā mendōu xū yào huò dé yī gè suí jī cháng dù de xìn xī bìng chǎn shēng yī gè 128 wèi de xìn xī zhāi yào。 suī rán zhè xiē suàn fǎ de jié gòu huò duō huò shǎo yòu xiē xiāng sì, dàn MD2 de shè jì yǔ MD4 hé MD5 wán quán bù tóng, nà shì yīn wéi MD2 shì wéi 8 wèi jī qì zuò guò shè jì yōu huà de, ér MD4 hé MD5 què shì miàn xiàng 32 wèi de diàn nǎo。 zhè sān gè suàn fǎ de miáo shù hé C yǔ yán yuán dài mǎ zài InternetRFCs1321 zhōng yòu xiáng xì de miáo shù( http://www.ietf.org/rfc/rfc1321.txt), zhè shì yī fèn zuì quán wēi de wén dàng, yóu RonaldL.Rivest zài 1992 nián 8 yuè xiàng IEFT tí jiāo。
VanOorschot hé Wiener céng jīng kǎo lǜ guò yī gè zài sàn liè zhōng bào lì sōu xún chōng tū de hán shù( Brute-ForceHashFunction), ér qiě tā men cāi cè yī gè bèi shè jì zhuān mén yòng lái sōu suǒ MD5 chōng tū de jī qì( zhè tái jī qì zài 1994 nián de zhì zào chéng běn dà yuē shì yī bǎi wàn měi yuán) kě yǐ píng jūn měi 24 tiān jiù zhǎo dào yī gè chōng tū。 dàn dān cóng 1991 nián dào 2001 nián zhè 10 nián jiān, jìng méi yòu chū xiàn tì dài md5 suàn fǎ de MD6 huò bèi jiào zuò qí tā shénme míng zì de xīn suàn fǎ zhè yī diǎn, wǒ men jiù kě yǐ kàn chū zhè gè xiá cī bìng méi yòu tài duō de yǐng xiǎng MD5 de 'ān quán xìng。 shàng miàn suǒ yòu zhè xiē dōubù zú yǐ chéng wéi MD5 de zài shí jì yìng yòng zhōng de wèn tí。 bìng qiě, yóu yú md5 suàn fǎ de shǐ yòng bù xū yào zhī fù rèn hé bǎn quán fèi yòng de, suǒ yǐ zài yī bān de qíng kuàng xià( fēi jué mì yìng yòng lǐng yù。 dàn jí biàn shì yìng yòng zài jué mì lǐng yù nèi, MD5 yě bù shī wéi yī zhǒng fēi cháng yōu xiù de zhōng jiān jì shù), MD5 zěn me dū yìng gāi suàn dé shàng shì fēi cháng 'ān quán de liǎo。
suàn fǎ de yìng yòng
MD5 de diǎn xíng yìng yòng shì duì yī duàn xìn xī( Message) chǎn shēng xìn xī zhāi yào( Message-Digest), yǐ fáng zhǐ bèi cuàn gǎi。 bǐ rú, zài UNIX xià yòu hěn duō ruǎn jiàn zài xià zài de shí hòu dōuyòu yī gè wén jiàn míng xiāng tóng, wén jiàn kuò zhǎn míng wéi .md5 de wén jiàn, zài zhè gè wén jiàn zhōng tōng cháng zhǐ yòu yīháng wén běn, dà zhì jié gòu rú:
MD5(tanajiya.tar.gz)=0ca175b9c0f726a831d895e269332461
zhè jiù shì tanajiya.tar.gz wén jiàn de shù zì qiān míng。 MD5 jiāng zhěng gè wén jiàn dāng zuò yī gè dà wén běn xìn xī, tōng guò qí bù kě nì de zì fú chuàn biàn huàn suàn fǎ, chǎn shēng liǎo zhè gè wéi yī de MD5 xìn xī zhāi yào。 rú guǒ zài yǐ hòu chuán bō zhè gè wén jiàn de guò chéng zhōng, wú lùn wén jiàn de nèi róng fā shēng liǎo rèn hé xíng shì de gǎi biàn( bāo kuò rén wéi xiū gǎi huò zhě xià zài guò chéng zhōng xiàn lù bù wěn dìng yǐn qǐ de chuán shū cuò wù děng), zhǐ yào nǐ duì zhè gè wén jiàn chóngxīn jì suàn MD5 shí jiù huì fā xiàn xìn xī zhāi yào bù xiāng tóng, yóu cǐ kě yǐ què dìng nǐ dé dào de zhǐ shì yī gè bù zhèng què de wén jiàn。 rú guǒ zài yòu yī gè dì sān fāng de rèn zhèng jī gòu, yòng MD5 hái kě yǐ fáng zhǐ wén jiàn zuò zhě de " dǐ lài ", zhè jiù shì suǒ wèi de shù zì qiān míng yìng yòng。
MD5 hái guǎng fàn yòng yú jiā mì hé jiě mì jì shù shàng。 bǐ rú zài UNIX xì tǒng zhōng yòng hù de mì mǎ jiù shì yǐ MD5( huò qí tā lèi shìde suàn fǎ) jīng jiā mì hòu cún chǔ zài wén jiàn xì tǒng zhōng。 dāng yòng hù dēng lù de shí hòu, xì tǒng bǎ yòng hù shū rù de mì mǎ jì suàn chéng MD5 zhí, rán hòu zài qù hé bǎo cún zài wén jiàn xì tǒng zhōng de MD5 zhí jìn xíng bǐ jiào, jìn 'ér què dìng shū rù de mì mǎ shì fǒu zhèng què。 tōng guò zhè yàng de bù zhòu, xì tǒng zài bìng bù zhī dào yòng hù mì mǎ de míng mǎ de qíng kuàng xià jiù kě yǐ què dìng yòng hù dēng lù xì tǒng de hé fǎ xìng。 zhè bù dàn kě yǐ bì miǎn yòng hù de mì mǎ bèi jù yòu xì tǒng guǎn lǐ yuán quán xiàn de yòng hù zhī dào, ér qiě hái zài yī dìng chéng dù shàng zēng jiā liǎo mì mǎ bèi pò jiě de nán dù。
zhèng shì yīn wéi zhè gè yuán yīn, xiàn zài bèi hēi kè shǐ yòng zuì duō de yī zhǒng pò yì mì mǎ de fāng fǎ jiù shì yī zhǒng bèi chēng wéi " páo zì diǎn " de fāng fǎ。 yòu liǎng zhǒng fāng fǎ dé dào zì diǎn, yī zhǒng shì rì cháng sōu jí de yòng zuò mì mǎ de zì fú chuàn biǎo, lìng yī zhǒng shì yòng pái liè zǔ hé fāng fǎ shēng chéng de, xiān yòng MD5 chéng xù jì suàn chū zhè xiē zì diǎn xiàng de MD5 zhí, rán hòu zài yòng mù biāo de MD5 zhí zài zhè gè zì diǎn zhōng jiǎn suǒ。 wǒ men jiǎ shè mì mǎ de zuì dà cháng dù wéi 8 wèi zì jié( 8Bytes), tóng shí mì mǎ zhǐ néng shì zì mǔ hé shù zì, gòng 26+26+10=62 gè zì fú, pái liè zǔ hé chū de zì diǎn de xiàng shù zé shì P(62,1)+P(62,2)… .+P(62,8), nà yě yǐ jīng shì yī gè hěn tiān wén de shù zì liǎo, cún chǔ zhè gè zì diǎn jiù xū yào TB jí de cí pán zhèn liè, ér qiě zhè zhǒng fāng fǎ hái yòu yī gè qián tí, jiù shì néng huò dé mù biāo zhàng hù de mì mǎ MD5 zhí de qíng kuàng xià cái kě yǐ。 zhè zhǒng jiā mì jì shù bèi guǎng fàn de yìng yòng yú UNIX xì tǒng zhōng, zhè yě shì wèishénme UNIX xì tǒng bǐ yī bān cāo zuò xì tǒng gèng wéi jiān gù yī gè zhòng yào yuán yīn。
suàn fǎ miáo shù
duì md5 suàn fǎ jiǎn yào de xù shù kě yǐ wéi: MD5 yǐ 512 wèi fēn zǔ lái chù lǐ shū rù de xìn xī, qiě měi yī fēn zǔ yòu bèi huàfēn wéi 16 gè 32 wèi zǐ fēn zǔ, jīng guò liǎo yī xì liè de chǔlǐ hòu, suàn fǎ de shū chū yóu sì gè 32 wèi fēn zǔ zǔ chéng, jiāng zhè sì gè 32 wèi fēn zǔ jí lián hòu jiāng shēng chéng yī gè 128 wèi sàn liè zhí。
zài md5 suàn fǎ zhōng, shǒu xiān xū yào duì xìn xī jìn xíng tián chōng, shǐ qí zì jié cháng dù duì 512 qiú yú de jiēguǒ děng yú 448。 yīn cǐ, xìn xī de zì jié cháng dù( BitsLength) jiāng bèi kuò zhǎn zhì N*512+448, jí N*64+56 gè zì jié( Bytes), N wéi yī gè zhèng zhěng shù。 tián chōng de fāng fǎ rú xià, zài xìn xī de hòu miàn tián chōng yī gè 1 hé wú shù gè 0, zhí dào mǎn zú shàng miàn de tiáo jiàn shí cái tíng zhǐ yòng 0 duì xìn xī de tián chōng。 rán hòu, zài zài zhè gè jiēguǒ hòu miàn fù jiā yī gè yǐ 64 wèi 'èr jìn zhì biǎo shì de tián chōng qián xìn xī cháng dù。 jīng guò zhè liǎng bù de chǔlǐ, xiàn zài de xìn xī zì jié cháng dù =N*512+448+64=(N+1)*512, jí cháng dù qià hǎo shì 512 de zhěng shù bèi。 zhè yàng zuò de yuán yīn shì wéi mǎn zú hòu miàn chǔlǐ zhōng duì xìn xī cháng dù de yào qiú。
MD5 zhōng yòu sì gè 32 wèi bèi chēng zuò liàn jiē biàn liàng( ChainingVariable) de zhěng shù cān shù, tā men fēn bié wéi: A=0x01234567, B=0x89abcdef, C=0xfedcba98, D=0x76543210。
dāng shè zhì hǎo zhè sì gè liàn jiē biàn liàng hòu, jiù kāi shǐ jìn rù suàn fǎ de sì lún xún huán yùn suàn。 xún huán de cì shù shì xìn xī zhōng 512 wèi xìn xī fēn zǔ de shù mù。
jiāng shàng miàn sì gè liàn jiē biàn liàng fù zhì dào lìng wài sì gè biàn liàng zhōng: A dào a, B dào b, C dào c, D dào d。
zhù xún huán yòu sì lún( MD4 zhǐ yòu sān lún), měi lún xún huán dōuhěn xiāng sì。 dì yī lún jìn xíng 16 cì cāo zuò。 měi cì cāo zuò duì a、 b、 c hé d zhōng de qí zhōng sān gè zuò yī cì fēi xiàn xìng hán shù yùn suàn, rán hòu jiāng suǒ dé jiēguǒ jiā shàng dì sì gè biàn liàng, wén běn de yī gè zǐ fēn zǔ hé yī gè cháng shù。 zài jiāng suǒ dé jiēguǒ xiàng yòu huán yí yī gè bù dìng de shù, bìng jiā shàng a、 b、 c huò d zhōng zhī yī。 zuì hòu yòng gāi jiēguǒ qǔ dài a、 b、 c huò d zhōng zhī yī。
yǐ yī xià shì měi cì cāo zuò zhōng yòng dào de sì gè fēi xiàn xìng hán shù( měi lún yī 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))
( & shì yǔ, | shì huò, ~ shì fēi, ^ shì yì huò)
zhè sì gè hán shù de shuō míng: rú guǒ X、 Y hé Z de duì yìng wèi shì dú lì hé jūn yún de, nà me jiēguǒ de měi yī wèi yě yìng shì dú lì hé jūn yún de。 F shì yī gè zhú wèi yùn suàn de hán shù。 jí, rú guǒ X, nà me Y, fǒu zé Z。 hán shù H shì zhú wèi jī'ǒu cāo zuò fú。
jiǎ shè Mj biǎo shì xiāo xī de dì j gè zǐ fēn zǔ( cóng 0 dào 15), <<
FF(a,b,c,d,Mj,s,ti) biǎo shì a=b+((a+(F(b,c,d)+Mj+ti)<<GG(a,b,c,d,Mj,s,ti) biǎo shì a=b+((a+(G(b,c,d)+Mj+ti)<<HH(a,b,c,d,Mj,s,ti) biǎo shì a=b+((a+(H(b,c,d)+Mj+ti)<<II(a,b,c,d,Mj,s,ti) biǎo shì a=b+((a+(I(b,c,d)+Mj+ti)<<
zhè sì lún( 64 bù) shì:
dì yī lún
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)
dì 'èr lún
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)
dì sān lún
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)
dì sì lún
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)
cháng shù ti kě yǐ rú xià xuǎn zé:
zài dì i bù zhōng, ti shì 4294967296*abs(sin(i)) de zhěng shù bù fēn, i de dān wèi shì hú dù。 (4294967296 děng yú 2 de 32 cì fāng )
suǒ yòu zhè xiē wán chéng zhī hòu, jiāng A、 B、 C、 D fēn bié jiā shàng a、 b、 c、 d。 rán hòu yòng xià yī fēn zǔ shù jù jì xù yùn xíng suàn fǎ, zuì hòu de shū chū shì A、 B、 C hé D de jí lián。
dāng nǐ 'àn zhào wǒ shàng miàn suǒ shuō de fāng fǎ shí xiàn md5 suàn fǎ yǐ hòu, nǐ kě yǐ yòng yǐ xià jǐ gè xìn xī duì nǐ zuò chū lái de chéng xù zuò yī gè jiǎn dān de cè shì, kàn kàn chéng xù yòu méi yòu cuò wù。
MD5("")=d41d8cd98f00b204e9800998ecf8427e
MD5("a")=0cc175b9c0f1b6a831c399e269772661
MD5("abc")=900150983cd24fb0d6963f7d28e17f72
MD5("messagedigest")=f96b697d7cb7938d525a2f31aaf161d0
MD5("abcdefghijklmnopqrstuvwxyz")=c3fcd3d76192e4007dfb496cca67e13b
MD5("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")=
d174ab98d277d9f5a5611c2c9f419d9f
MD5("123456789012345678901234567890123456789012345678901234567890123456789
01234567890")=57edf4a22be3c955ac49da2e2107b67a
MD5 de 'ān quán xìng
MD5 xiāng duì MD4 suǒ zuò de gǎi jìn:
1. zēng jiā liǎo dì sì lún;
2. měi yī bù jūn yòu wéi yī de jiā fǎ cháng shù;
3. wéi jiǎn ruò dì 'èr lún zhōng hán shù G de duìchèn xìng cóng (X&Y)|(X&Z)|(Y&Z) biàn wéi (X&Z)|(Y&(~Z));
4. dì yī bù jiā shàng liǎo shàng yī bù de jiēguǒ, zhè jiāng yǐn qǐ gèng kuài de xuě bēng xiào yìng;
5. gǎi biàn liǎo dì 'èr lún hé dì sān lún zhōng fǎng wèn xiāo xī zǐ fēn zǔ de cì xù, shǐ qí gèng bù xiāng sì;
6. jìn sì yōu huà liǎo měi yī lún zhōng de xún huán zuǒ yí wèi yí liàng yǐ shí xiàn gèng kuài de xuě bēng xiào yìng。 gè lún de wèi yí liàng hù bù xiāng tóng。 |
|
|