Õ¾ÄÚËÑË÷: ÇëÊäÈëËÑË÷¹Ø¼ü´Ê

µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú MD5µÄJava BeanʵÏÖ

MD5µÄJava BeanʵÏÖ

ÕªÒª: MD5µÄÈ«³ÆÊÇMessage-Digest Algorithm 5£¬ÔÚ90Äê´ú³õÓÉMITµÄ¼ÆËã»ú¿ÆѧʵÑéÊÒºÍRSA Data Security Inc·¢Ã÷£¬¾­MD2¡¢MD3ºÍMD4·¢Õ¹¶øÀ´.......
<iframe align=right frameBorder=0 height=300 marginHeight=0 marginWidth=0 scrolling=no src="http://www.chinabyte.com/tag/cont_flash_software.html" width=360></iframe>¡¡¡¡MD5¼ò½é

¡¡¡¡MD5µÄÈ«³ÆÊÇMessage-Digest Algorithm 5£¬ÔÚ90Äê´ú³õÓÉMITµÄ¼ÆËã»ú¿ÆѧʵÑéÊÒºÍRSA Data Security Inc·¢Ã÷£¬¾­MD2¡¢MD3ºÍMD4·¢Õ¹¶øÀ´¡£

¡¡¡¡Message-Digest·ºÖ¸×Ö½Ú´®(Message)µÄHash±ä»»£¬¾ÍÊÇ°ÑÒ»¸öÈÎÒⳤ¶ÈµÄ×Ö½Ú´®±ä»»³ÉÒ»¶¨³¤µÄ´óÕûÊý¡£Çë×¢ÒâÎÒʹÓÃÁË¡°×Ö½Ú´®¡±¶ø²»ÊÇ¡°×Ö·û´®¡±Õâ¸ö´Ê£¬ÊÇÒòΪÕâÖֱ任ֻÓë×Ö½ÚµÄÖµÓйأ¬Óë×Ö·û¼¯»ò±àÂ뷽ʽÎ޹ء£

¡¡¡¡MD5½«ÈÎÒⳤ¶ÈµÄ¡°×Ö½Ú´®¡±±ä»»³ÉÒ»¸ö128bitµÄ´óÕûÊý£¬²¢ÇÒËüÊÇÒ»¸ö²»¿ÉÄæµÄ×Ö·û´®±ä»»Ëã·¨£¬»»¾ä»°Ëµ¾ÍÊÇ£¬¼´Ê¹Äã¿´µ½Ô´³ÌÐòºÍËã·¨ÃèÊö£¬Ò²ÎÞ·¨½«Ò»¸öMD5µÄÖµ±ä»»»ØԭʼµÄ×Ö·û´®£¬´ÓÊýѧԭÀíÉÏ˵£¬ÊÇÒòΪԭʼµÄ×Ö·û´®ÓÐÎÞÇî¶à¸ö£¬ÕâÓеãÏó²»´æÔÚ·´º¯ÊýµÄÊýѧº¯Êý¡£

¡¡¡¡MD5µÄµäÐÍÓ¦ÓÃÊǶÔÒ»¶ÎMessage(×Ö½Ú´®)²úÉúfingerprint(Ö¸ÎÆ)£¬ÒÔ·ÀÖ¹±»¡°´Û¸Ä¡±¡£¾Ù¸öÀý×Ó£¬Ä㽫һ¶Î»°Ð´ÔÚÒ»¸ö½Ðreadme.txtÎļþÖУ¬²¢¶ÔÕâ¸öreadme.txt²úÉúÒ»¸öMD5µÄÖµ²¢¼Ç¼ÔÚ°¸£¬È»ºóÄã¿ÉÒÔ´«²¥Õâ¸öÎļþ¸ø±ðÈË£¬±ðÈËÈç¹ûÐÞ¸ÄÁËÎļþÖеÄÈκÎÄÚÈÝ£¬Äã¶ÔÕâ¸öÎļþÖØмÆËãMD5ʱ¾Í»á·¢ÏÖ¡£Èç¹ûÔÙÓÐÒ»¸öµÚÈý·½µÄÈÏÖ¤»ú¹¹£¬ÓÃMD5»¹¿ÉÒÔ·ÀÖ¹Îļþ×÷Õߵġ°µÖÀµ¡±£¬Õâ¾ÍÊÇËùνµÄÊý×ÖÇ©ÃûÓ¦Óá£

¡¡¡¡MD5»¹¹ã·ºÓÃÓÚ¼ÓÃܺͽâÃܼ¼ÊõÉÏ£¬Ôںܶà²Ù×÷ϵͳÖУ¬Óû§µÄÃÜÂëÊÇÒÔMD5Öµ£¨»òÀàËƵÄÆäËüËã·¨£©µÄ·½Ê½±£´æµÄ£¬ Óû§LoginµÄʱºò£¬ÏµÍ³ÊÇ°ÑÓû§ÊäÈëµÄÃÜÂë¼ÆËã³ÉMD5Öµ£¬È»ºóÔÙÈ¥ºÍϵͳÖб£´æµÄMD5Öµ½øÐбȽϣ¬¶øϵͳ²¢²»¡°ÖªµÀ¡±Óû§µÄÃÜÂëÊÇʲô¡£

¡¡¡¡Ò»Ð©ºÚ¿ÍÆÆ»ñÕâÖÖÃÜÂëµÄ·½·¨ÊÇÒ»ÖÖ±»³ÆΪ¡°ÅÜ×ֵ䡱µÄ·½·¨¡£ÓÐÁ½ÖÖ·½·¨µÃµ½×ֵ䣬һÖÖÊÇÈÕ³£ËѼ¯µÄÓÃ×öÃÜÂëµÄ×Ö·û´®±í£¬ÁíÒ»ÖÖÊÇÓÃÅÅÁÐ×éºÏ·½·¨Éú³ÉµÄ£¬ÏÈÓÃMD5³ÌÐò¼ÆËã³öÕâЩ×ÖµäÏîµÄMD5Öµ£¬È»ºóÔÙÓÃÄ¿±êµÄMD5ÖµÔÚÕâ¸ö×ÖµäÖмìË÷¡£

¡¡¡¡¼´Ê¹¼ÙÉèÃÜÂëµÄ×î´ó³¤¶ÈΪ8£¬Í¬Ê±ÃÜÂëÖ»ÄÜÊÇ×ÖĸºÍÊý×Ö£¬¹²26+26+10=62¸ö×Ö·û£¬ÅÅÁÐ×éºÏ³öµÄ×ÖµäµÄÏîÊýÔòÊÇP(62,1)+P(62,2)¡­.+P(62,8)£¬ÄÇÒ²ÒѾ­ÊÇÒ»¸öºÜÌìÎĵÄÊý×ÖÁË£¬´æ´¢Õâ¸ö×Öµä¾ÍÐèÒªTB¼¶µÄ´ÅÅÌ×飬¶øÇÒÕâÖÖ·½·¨»¹ÓÐÒ»¸öÇ°Ìᣬ¾ÍÊÇÄÜ»ñµÃÄ¿±êÕË»§µÄÃÜÂëMD5ÖµµÄÇé¿öϲſÉÒÔ¡£

¡¡¡¡Ôںܶàµç×ÓÉÌÎñºÍÉçÇøÓ¦ÓÃÖУ¬¹ÜÀíÓû§µÄAccountÊÇÒ»ÖÖ×î³£ÓõĻù±¾¹¦ÄÜ£¬¾¡¹ÜºÜ¶àApplication ServerÌṩÁËÕâЩ»ù±¾×é¼þ£¬µ«ºÜ¶àÓ¦Óÿª·¢ ÕßΪÁ˹ÜÀíµÄ¸ü´óµÄÁé»îÐÔ»¹ÊÇϲ»¶²ÉÓùØϵÊý¾Ý¿âÀ´¹ÜÀíÓû§£¬ÀÁ¶èµÄ×ö·¨ÊÇÓû§µÄÃÜÂëÍùÍùʹÓÃÃ÷ÎÄ»ò¼òµ¥µÄ±ä»»ºóÖ±½Ó±£´æÔÚÊý¾Ý¿âÖУ¬Òò´ËÕâЩÓû§µÄÃÜÂë¶ÔÈí¼þ¿ª·¢Õß»òϵͳ¹ÜÀíÔ±À´Ëµ¿ÉÒÔ˵ºÁÎÞ±£ÃÜ¿ÉÑÔ£¬±¾ÎĵÄÄ¿µÄÊǽéÉÜMD5µÄJava BeanµÄʵÏÖ£¬Í¬Ê±¸ø³öÓÃMD5À´´¦ÀíÓû§µÄAccountÃÜÂëµÄÀý×Ó£¬ÕâÖÖ·½·¨Ê¹µÃ¹ÜÀíÔ±ºÍ³ÌÐòÉè¼ÆÕ߶¼ÎÞ·¨¿´µ½Óû§µÄÃÜÂ룬¾¡¹ÜËûÃÇ¿ÉÒÔ³õʼ»¯ËüÃÇ¡£µ«ÖØÒªµÄÒ»µãÊǶÔÓÚÓû§ÃÜÂëÉèÖÃÏ°¹ßµÄ±£»¤¡£

¡¡¡¡ÓÐÐËȤµÄ¶ÁÕß¿ÉÒÔ´ÓÕâÀïÈ¡µÃMD5Ò²¾ÍÊÇRFC 1321µÄÎı¾¡£http://www.ietf.org/rfc/rfc1321.txt

¡¡¡¡ÊµÏÖ²ßÂÔ

¡¡¡¡MD5µÄËã·¨ÔÚRFC1321ÖÐʵ¼ÊÉÏÒѾ­ÌṩÁËCµÄʵÏÖ£¬ÎÒÃÇÆäʵÂíÉϾÍÄÜÏëµ½£¬ÖÁÉÙÓÐÁ½ÖÖÓÃJavaʵÏÖËüµÄ·½·¨£¬µÚÒ»ÖÖÊÇ£¬ÓÃJavaÓïÑÔÖØÐÂдÕû¸öËã·¨£¬»òÕßÔÙ˵¼òµ¥µã¾ÍÊÇ°ÑC³ÌÐò¸Äд³ÉJava³ÌÐò¡£µÚ¶þÖÖÊÇ£¬ÓÃJNI(Java Native Interface)À´ÊµÏÖ£¬ºËÐÄËã·¨ÈÔÈ»ÓÃÕâ¸öC³ÌÐò£¬ÓÃJavaÀà¸øËü°ü¸ö¿Ç¡£

¡¡¡¡µ«ÎÒ¸öÈËÈÏΪ£¬JNIÓ¦¸ÃÊÇJavaΪÁ˽â¾öijÀàÎÊÌâʱµÄûÓа취µÄ°ì·¨£¨±ÈÈçÓë²Ù×÷ϵͳ»òI/OÉ豸ÃÜÇÐÏà¹ØµÄÓ¦Óã©£¬Í¬Ê±ÎªÁËÌṩºÍÆäËüÓïÑԵĻ¥²Ù×÷ÐÔµÄÒ»¸öÊֶΡ£Ê¹ÓÃJNI´øÀ´µÄ×î´óÎÊÌâÊÇÒýÈëÁËƽ̨µÄÒÀÀµÐÔ£¬´òÆÆÁËSUNËù¹Ä´µµÄ¡°Ò»´Î±àдµ½´¦ÔËÐС±µÄJavaºÃ´¦¡£Òò´Ë£¬ÎÒ¾ö¶¨²ÉÈ¡µÚÒ»ÖÖ·½·¨£¬Ò»À´ºÍ´ó¼ÒÒ»Æð³¢ÊÔһϡ°Ò»´Î±àдµ½´¦ÔËÐС±µÄºÃ´¦£¬¶þÀ´¼ìÑéÒ»ÏÂJava 2ÏÖÔÚ¶ÔÓڱȽÏÃܼ¯µÄ¼ÆËãµÄЧÂÊÎÊÌâ¡£

¡¡¡¡ÊµÏÖ¹ý³Ì

¡¡¡¡ÏÞÓÚÕâƪÎÄÕµÄƪ·ù£¬Í¬Ê±Ò²ÎªÁ˸ü¶àµÄ¶ÁÕßÄܹ»ÕæÕýרעÓÚÎÊÌâ±¾Éí£¬ÎÒ²»Ïë¾ÍijһÖÖJava¼¯³É¿ª·¢»·¾³À´½éÉÜÕâ¸öJava BeanµÄÖÆ×÷¹ý³Ì£¬½éÉÜÒ»¸ö·½·¨Ê±ÎÒ·¢ÏÖ²½ÖèºÍÃüÁîºÜÇåÎú£¬ÎÒÏàÐÅÓÐÈκÎÒ»ÖÖJava¼¯³É»·¾³ÈýÌìÒÔÉϾ­ÑéµÄ¶ÁÕ߶¼»áÖªµÀÈçºÎ°ÑÕâЩ´úÂëÔÚ¼¯³É»·¾³ÖбàÒëºÍÔËÐС£Óü¯³É»·¾³½²ÊöÎÊÌâÍùÍùÐèÒªÅäºÜ¶àÆÁÄ»½Øͼ£¬ÕâÒ²ÊÇÎÒÒ»Ö±¶Ô¼¯³É»·¾³ºÜÍ·ÌÛµÄÔ­Òò¡£ÎÒʹÓÃÁËÒ»¸öÆÕͨµÄÎı¾±à¼­Æ÷£¬Í¬Ê±Ê¹ÓÃÁËSun¹«Ë¾±ê×¼µÄJDK 1.3.0 for Windows NT¡£

¡¡¡¡Æäʵ°ÑCת»»³ÉJava¶ÔÓÚÒ»¸öÓÐÒ»¶¨CÓïÑÔ»ù´¡µÄ³ÌÐòÔ±²¢²»À§ÄÑ£¬ÕâÁ½¸öÓïÑԵĻù±¾Óï·¨¼¸ºõÍêÈ«Ò»Ö£®ÎÒ´ó¸Å»¨ÁËÒ»¸öСʱµÄʱ¼äÍê³ÉÁË´úÂëµÄת»»¹¤×÷£¬ÎÒÖ÷Òª×÷ÁËÏÂÃ漸¼þÊ£º


¡¡¡¡°Ñ±ØÐëʹÓõÄһЩ#defineµÄºê¶¨Òå±ä³ÉClassÖеÄfinal static£¬ÕâÑù±£Ö¤ÔÚÒ»¸ö½ø³Ì¿Õ¼äÖеĶà¸öInstance¹²ÏíÕâЩÊý¾Ý

¡¡¡¡É¾È¥ÁËһЩÎÞÓõÄ#if define£¬ÒòΪÎÒÖ»¹ØÐÄMD5£¬Õâ¸öÍƼöµÄCʵÏÖͬʱʵÏÖÁËMD2 MD3ºÍ MD4£¬¶øÇÒÓÐЩ#if define» ¹ºÍC²»Í¬±àÒëÆ÷ÓйØ

¡¡¡¡½«Ò»Ð©¼ÆËãºêת»»³Éfinal static ³ÉÔ±º¯Êý¡£

¡¡¡¡ËùÓеıäÁ¿ÃüÃûÓëÔ­À´CʵÏÖÖб£³ÖÒ»Ö£¬ÔÚ´óСдÉÏ×÷һЩ·ûºÏJavaÏ°¹ßµÄ±ä»¯£¬¼ÆËã¹ý³ÌÖеÄCº¯Êý±ä³ÉÁËprivate·½·¨(³ÉÔ±º¯Êý)¡£

¡¡¡¡¹Ø¼ü±äÁ¿µÄ볤µ÷Õû

¡¡¡¡¶¨ÒåÁËÀàºÍ·½·¨

¡¡¡¡ÐèҪעÒâµÄÊÇ£¬ºÜ¶àÔçÆÚµÄC±àÒëÆ÷µÄintÀàÐÍÊÇ16 bitµÄ£¬MD5ʹÓÃÁËunsigned long int£¬²¢ÈÏΪËüÊÇ32bitµÄÎÞ·ûºÅÕûÊý¡£¶øÔÚJavaÖÐintÊÇ32 bitµÄ£¬longÊÇ64 bitµÄ¡£ÔÚMD5µÄCʵÏÖÖУ¬Ê¹ÓÃÁË´óÁ¿µÄλ²Ù×÷¡£ÕâÀïÐèÒªÖ¸³öµÄÒ»µãÊÇ£¬¾¡¹ÜJavaÌṩÁËλ²Ù×÷£¬ÓÉÓÚJavaûÓÐunsignedÀàÐÍ£¬¶ÔÓÚÓÒÒÆλ²Ù×÷¶àÌṩÁËÒ»¸öÎÞ·ûºÅÓÒÒÆ£º>>>£¬µÈ¼ÛÓÚCÖÐµÄ >> ¶ÔÓÚunsigned ÊýµÄ´¦Àí¡£

¡¡¡¡ÒòΪJava²»ÌṩÎÞ·ûºÅÊýµÄÔËË㣬Á½¸ö´óintÊýÏà¼Ó¾Í»áÒç³öµÃµ½Ò»¸ö¸ºÊý»òÒì³££¬Òò´ËÎÒ½«Ò»Ð©¹Ø¼ü±äÁ¿ÔÚJavaÖиijÉÁËlongÀàÐÍ(64bit)¡£ÎÒ¸öÈËÈÏΪÕâ±È×Ô¼ºÈ¥ÖØж¨ÒåÒ»×éÎÞ·ûºÅÊýµÄÀàͬʱÖØÔØÄÇЩÔËËã·ûÒª·½±ã£¬Í¬Ê±Ð§ÂʸߺܶಢÇÒ´úÂëÒ²Ò׶Á£¬OO(Object Oriented)µÄÀÄÓ÷´¶ø»áµ¼ÖÂЧÂʵÍÏ¡£

¡¡¡¡ÏÞÓÚƪ·ù£¬ÕâÀï²»ÔÙ¸ø³öԭʼµÄC´úÂ룬ÓÐÐËȤ¶ÔÕյĶÁÕßÅóÓÑ¿ÉÒÔÈ¥¿´RFC 1321¡£MD5.javaÔ´´úÂë

¡¡¡¡²âÊÔ

¡¡¡¡ÔÚRFC 1321ÖУ¬¸ø³öÁËTest suiteÓÃÀ´¼ìÑéÄãµÄʵÏÖÊÇ·ñÕýÈ·£º

<table bgColor=#ffffff border=0 cellPadding=0 cellSpacing=0 width=600> <tr> <td>MD5 ("") = d41d8cd98f00b204e9800998ecf8427e

MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661

MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72

MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0

MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b

¡­¡­</td></tr></table>
¡¡¡¡ÕâЩÊä³ö½á¹ûµÄº¬ÒåÊÇÖ¸£º¿Õ×Ö·û´®¡±¡±µÄMD5ÖµÊÇd41d8cd98f00b204e9800998ecf8427e£¬×Ö·û´®¡±a¡±µÄMD5ÖµÊÇ0cc175b9c0f1b6a831c399e269772661¡­¡­

¡¡¡¡±àÒë²¢ÔËÐÐÎÒÃǵijÌÐò£º

<table bgColor=#ffffff border=0 cellPadding=0 cellSpacing=0 width=600> <tr> <td>javac ¨Cd . MD5.java
java beartool.MD5 </td></tr></table>
¡¡¡¡ÎªÁ˽«À´²»Óë±ðÈ˵ÄͬÃû³ÌÐò³åÍ»£¬ÎÒÔÚÎҵijÌÐòµÄµÚÒ»ÐÐʹÓÃÁËpackage beartool;

¡¡¡¡Òò´Ë±àÒëÃüÁîjavac ¨Cd . MD5.java ÃüÁîÔÚÎÒÃǵŤ×÷Ŀ¼ÏÂ×Ô¶¯½¨Á¢ÁËÒ»¸öbeartoolĿ¼£¬Ä¿Â¼Ï·Å×űàÒë³É¹¦µÄ MD5.class

¡¡¡¡ÎÒÃǽ«µÃµ½ºÍTest suiteͬÑùµÄ½á¹û¡£µ±È»»¹¿ÉÒÔ¼ÌÐø²âÊÔÄã¸ÐÐËȤµÄÆäËüMD5±ä»»£¬ÀýÈ磺

¡¡¡¡java beartool.MD5¡¡1234

¡¡¡¡½«¸ø³ö1234µÄMD5Öµ¡£

¡¡¡¡¿ÉÄÜÊÇÎҵļÆËã»ú֪ʶÊÇ´ÓApple IIºÍZ80µ¥°å»ú¿ªÊ¼µÄ£¬ÎÒ¶Ô´óдʮÁù½øÖÆ´úÂëÓÐÆ«ºÃ£¬Èç¹ûÄúÏëʹÓÃСдµÄDigest StringÖ»ÐèÒª°ÑbyteHEXº¯ÊýÖеÄA¡¢B¡¢C¡¢D¡¢E¡¢F¸Ä³Éa¡¢b¡¢ c¡¢d¡¢e¡¢f¾Í¿ÉÒÔÁË¡£

¡¡¡¡MD5¾Ý³ÆÊÇÒ»ÖֱȽϺÄʱµÄ¼ÆË㣬ÎÒÃǵÄJava°æMD5Ò»ÉÁ¾ÍËã³öÀ´ÁË£¬Ã»Óöµ½Ê²Ã´ÕÏ°­£¬¶øÇÒÓÃÈâÑ۸оõ²»³öÀ´Java°æµÄMD5±ÈC°æµÄÂý¡£

¡¡¡¡ÎªÁ˲âÊÔËüµÄ¼æÈÝÐÔ£¬ÎÒ°ÑÕâ¸öMD5.classÎļþ¿½±´µ½ÎÒµÄÁíһ̨Linux+IBM JDK 1.3µÄ»úÆ÷ÉÏ£¬Ö´ÐкóµÃµ½Í¬Ñù½á¹û£¬È·ÊµÊÇ¡°Ò»´Î±àдµ½´¦ÔËÐÐÁË¡±¡£

¡¡¡¡Java Bean¼òÊö

¡¡¡¡ÏÖÔÚ£¬ÎÒÃÇÒѾ­Íê³É²¢¼òµ¥²âÊÔÁËÕâ¸öJava Class£¬ÎÒÃÇÎÄÕµıêÌâÊÇ×öÒ»¸öJava Bean¡£

¡¡¡¡ÆäʵÆÕͨµÄJava BeanºÜ¼òµ¥£¬²¢²»ÊÇʲôȫеĻòΰ´óµÄ¸ÅÄ¾ÍÊÇÒ»¸öJavaµÄClass£¬¾¡¹Ü Sun¹æ¶¨ÁËһЩÐèҪʵÏֵķ½·¨£¬µ«²¢²»ÊÇÇ¿ÖƵġ£¶øEJB(Enterprise Java Bean)Î޷ǹ涨ÁËһЩ±ØÐëʵÏÖ£¨·Ç³£ÀàËÆÓÚÏìӦʼþ£©µÄ·½·¨£¬ÕâЩ·½·¨Êǹ©EJB ContainerʹÓÃ(µ÷ÓÃ)µÄ¡£

¡¡¡¡ÔÚÒ»¸öJava Application»òAppletÀïʹÓÃÕâ¸öbean·Ç³£¼òµ¥£¬×î¼òµ¥µÄ·½·¨ÊÇÄãҪʹÓÃÕâ¸öÀàµÄÔ´Â빤×÷Ŀ¼Ï½¨Ò»¸öbeartoolĿ¼£¬°ÑÕâ¸öclassÎļþ¿½±´½øÈ¥£¬È»ºóÔÚÄãµÄ³ÌÐòÖÐimport beartool.MD5¾Í¿ÉÒÔÁË¡£×îºó´ò°ü³É.jar»ò.warÊDZ£³ÖÕâ¸öÏà¶ÔµÄĿ¼¹Øϵ¾ÍÐÐÁË¡£



¡ü·µ»ØĿ¼
ǰһƪ: JavaÖÇÄÜ¿¨»ù´¡Æª¡ª¡ªÎ´À´Javaƽ̨µÄз¢Õ¹
ºóһƪ: ¶¯Ì¬ProxyÓëJava ACLÓû§·ÃÎÊ¿ØÖÆ»úÖÆʵÏÖ