Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
¶Ô¿¹ÍϿ⡪¡ªWeb ǰ¶ËÂý¼ÓÃÜ
 
×÷ÕߣºHRay À´Ô´£ºwooyun֪ʶ¿â ·¢²¼ÓÚ£º2016-4-13
  2037  次浏览      27

0x00 ǰÑÔ

ÌìÏÂÎ书£¬Î¨¿ì²»ÆÆ¡£µ«ÃÜÂë¼ÓÃܲ»Í¬¡£Ëã·¨Ô½¿ì£¬Ô½ÈÝÒ×ÆÆ¡£

0x01 ±©Á¦ÆÆ½â

ÃÜÂëÆÆ½â£¬¾ÍÊǰѼÓÃܺóµÄÃÜÂ뻹ԭ³ÉÃ÷ÎÄÃÜÂë¡£ËÆºõÓв»ÉÙ·½·¨£¬µ«×îÖÕ¶¼µÃ×ßÒ»Ìõ·£º±©Á¦Çî¾Ù¡£

Ò²ÐíÄã»á˵»¹¿ÉÒÔ²é±í£¬Ë²¼ä¾Í³ö½á¹û¡£ËäÈ»²é±í²»ÓÃÇî¾Ù£¬µ«±íµÄÖÆÔì¹ý³ÌÈÔÈ»ÐèÒª¡£²é±íÖ»Êǽ«Çî¾ÙÌáǰÁ˶øÒÑ¡£

ÃÜÂë¼ÓÃÜ£¬ÓõͼÊǵ¥ÏòÉ¢ÁмÆËã¡£¼ÈÈ»µ¥Ïò£¬ÄǾÍÊDz»¿ÉÄæ£¬ÄÇÖ»ÄÜÇî¾Ù¡£

Çî¾ÙµÄÔ­ÀíºÜ¼òµ¥¡£Ö»ÒªÖªµÀÃÜÎÄÊÇÓÃʲôËã·¨¼ÓÃܵģ¬ÎÒÃÇÒ²ÓÃÏàͬµÄËã·¨£¬°Ñ³£ÓõĴÊ×éÅÜÒ»±é¡£ÈôÓнá¹ûºÍÃÜÎÄÒ»Ñù£¬ÄǾͲÂÖÐÁË¡£

Çî¾ÙµÄËÙ¶ÈÓжà¿ì£¿ÕâºÍ¼ÓÃÜËã·¨Óйء£¼ÓÃÜÒ»´ÎÓжà¿ì£¬²ÂÒ»´ÎÒ²Õâô¿ì¡£

ÀýÈç MD5 ¼ÓÃÜÊǷdz£¿ìµÄ¡£¼ÓÃÜÒ»´ÎºÄ·Ñ 1 ΢Ã룬ÄÇÆÆ½âÊ±Ëæ±ã²ÂÒ»¸ö´Ê×飬ҲֻÐè 1 ΢Ã루¼ÙÉè»úÆ÷ÐÔÄÜÒ»Ñù£¬´Ê×鳤¶ÈÒ²²î²»¶à£©¡£¹¥»÷ÕßÒ»ÃëÖӾͿÉÒԲ 100 Íò¸ö£¬¶øÇÒÕ⻹ֻÊǵ¥Ï̵߳ÄËÙ¶È¡£

ËùÒÔ£¬¼ÓÃÜËã·¨Ô½¿ì£¬ÆÆ½âÆðÀ´¾ÍÔ½ÈÝÒס£

0x02 Âý¼ÓÃÜ

Èç¹ûÄÜÌá¸ß¼ÓÃÜʱ¼ä£¬ÏÔȻҲÄÜÔö¼ÓÆÆ½âʱ¼ä¡£

Èç¹û¼ÓÃÜÒ»´ÎÌá¸ßµ½ 10 ºÁÃ룬ÄÇô¹¥»÷ÕßÿÃëÖ»Äܲ 100 ¸ö£¬ÆÆ½âËٶȾÍÂýÁËÒ»Íò±¶¡£

ÔõÑù²ÅÄÜÈüÓÃܱäÂý£¿×î¼òµ¥µÄ£¬¾ÍÊǶԼÓÃܺóµÄ½á¹ûÔÙ¼ÓÃÜ£¬Öظ´¶à´Î¡£

ÀýÈ磬ԭ±¾ 1 ΢ÃëµÄ¼ÓÃÜ£¬Öظ´Ò»Íò´Î£¬¾ÍÂýÒ»Íò±¶ÁË£º

function slow_md5(x)
for i = 0 to 10000
x = md5(x)
return x
end

¹¥»÷ÕßÆÆ½âʱ£¬Ò²±ØÐëÓÃÕâÌ×Ëã·¨ÅÜ×ֵ䡣ÓÚÊÇ£¬ÆÆ½âʱ¼ä¾Í´ó·ùÔö¼ÓÁË¡£

ÊÂʵÉÏ£¬ÕâÑùµÄ¡¸Âý¼ÓÃÜ¡¹Ëã·¨ÔçÒÑ´æÔÚ£¬ÀýÈç bcrypt¡¢PBKDF2 µÈµÈ¡£ËüÃǶ¼ÓÐÒ»¸öÄѶÈϵÊýÒò×Ó£¬¿ÉÒÔ¿ØÖƼÓÃÜʱ¼ä£¬Ïë¶àÂý¾Í¶àÂý¡£

¼ÓÃÜÔ½Âý£¬ÆÆ½âʱ¼äÔ½³¤¡£

0x03 Âý¼ÓÃÜÓ¦ÓÃ

×îÐèÒªÂý¼ÓÃܵij¡ºÏ£¬¾ÍÊÇÍøÕ¾Êý¾Ý¿âÀïµÄÃÜÂë¡£

½ü¼¸Ä꣬¾­³£ÄÜÌýµ½ÍøÕ¾±»¡¸ÍϿ⡹µÄÐÂÎÅ¡£Óû§×ÊÁ϶¼ÊÇÃ÷ÎÄ´æ´¢£¬Ð¹Â¶ÁËÒ²ÎÞ·¨Íì»Ø¡£Î¨¶ÀÃÜÂ룬»¹¿ÉÒԺ͹¥»÷Õß¶Ô¿¹Ò»Ï¡£

È»¶ø²»ÉÙÍøÕ¾£¬Ê¹ÓõͼÊÇ¿ìËÙ¼ÓÃÜËã·¨£¬Òò´ËÇáÒ×¾ÍÄÜÆÆ½â³öÒ»¶ÑÈõ¿ÚÁîÕ˺š£

µ±È»£¬ÓÐʱֻÏëÆÆ½âij¸öÌØ¶¨ÈËÎïµÄÕ˺š£Ö»Òª²»ÊÇÌØ±ð¸´ÔӵĴʻ㣬ÅÜÉϼ¸Ì죬ºÜ¿ÉÄÜ¾ÍÆÆ³öÀ´¡£

µ«ÍøÕ¾ÓÃÁËÂý¼ÓÃÜ£¬½á¹û¿ÉÄܾͲ»Ò»ÑùÁË¡£Èç¹û°Ñ¼ÓÃÜʱ¼äÌá¸ß 100 ±¶£¬ÆÆ½âʱ¼ä¾ÍµÃ³¤´ïÊýÔ£¬±äµÃÄÑÒÔ½ÓÊÜ¡£

¼´Ê¹Êý¾Ýй¶£¬Ò²Äܱ£ÕÏ¡¸ÃÜÂ롹Õâ×îºóÒ»µÀÒþ˽¡£

0x04 Âý¼ÓÃÜȱµã

²»¹ý£¬Âý¼ÓÃÜÒ²ÓÐÃ÷ÏÔµÄȱµã£ºÏûºÄ´óÁ¿¼ÆËã×ÊÔ´¡£

ʹÓÃÂý¼ÓÃܵÄÍøÕ¾£¬Èç¹ûͬʱÀ´Á˶à¸öÓû§£¬·þÎñÆ÷ CPU ¿ÉÄܾͲ»¹»ÓÃÁË¡£ÒªÊÇÓöµ½¶ñÒâÓû§£¬·¢Æð´óÁ¿µÄµÇ¼ÇëÇó£¬ÉõÖÁÔì³É×ÊÔ´±»ºÄ¾¡¡£

ÐÔÄܺͰ²È«×ÜÊÇÄÑÒÔ¼æµÃ¡£ËùÒÔ£¬Ò»°ãÒ²²»»áʹÓÃÌ«¸ßµÄÇ¿¶È¡£

һЩ´óÐÍÍøÕ¾£¬ÉõÖÁΪ´ËͶÈ뼯Ⱥ£¬ÓÃÀ´´¦Àí´óÁ¿µÄ¼ÓÃܼÆËã¡£µ«ÕâÐèÒª²»Éٵijɱ¾¡£

ÓÐûÓÐʲô·½·¨£¬¿ÉÒÔÈÃÎÒÃÇʹÓÃËãÁ¦Ç¿¾¢¡¢Í¬Ê±ÓÖÃâ·ÑµÄ¼ÆËã×ÊÔ´£¿

0x05 ǰ¶Ë¼ÓÃÜ

ÔÚ¹ýÈ¥£¬¸öÈ˵çÄԺͷþÎñÆ÷µÄËÙ¶È£¬»¹ÊÇÓнϴó²î¾àµÄ¡£µ«Èç½ñ£¬Ëæ×ÅÓ²¼þ·¢Õ¹½øÈëÆ¿¾±£¬Õâ¸ö²î¾àÕýËõС¡£ÔÚµ¥ÏßÈÎÎñ´¦ÀíÉÏ£¬ÉõÖÁ²»ÏàÉÏÏ¡£

¿Í»§¶ËÓµÓÐÇ¿´óµÄËãÁ¦£¬Äܲ»ÄÜ·Öµ£Ò»Ð©·þÎñÆ÷µÄ¹¤×÷£¿

ÓÈÆäÏñ¡¸Âý¼ÓÃÜ¡¹ÕâÖÖËã·¨¿ªÔ´¡¢µ«¼ÆËã³ÁÖØµÄÈÎÎñ£¬ÎªºÎ²»½»¸ø¿Í»§¶ËÀ´Íê³É£¿

¹ýÈ¥£¬Ìá½»µÄÊÇÃ÷ÎÄÃÜÂ룻ÏÖÔÚ£¬Ìá½»µÄÔòÊÇÃ÷ÎÄÃÜÂëµÄ¡¸Âý¼ÓÃܽá¹û¡¹¡£ÎÞÂÛÊÇ×¢²á£¬»¹Êǵǽ¡£

¶ø·þÎñ¶Ë£¬ÎÞÐèÈκθ͝¡£½«ÊÕµ½µÄ¡¸Âý¼ÓÃܽá¹û¡¹£¬µ±×öÔ­À´µÄÃ÷ÎÄÃÜÂë ¾ÍÐС£ÒÔǰÊÇÔõô±£´æµÄ£¬ÏÖÔÚ»¹ÊÇÔõô±£´æ¡£

ÕâÑù¾ÍËã±»ÍϿ⣬¹¥»÷ÕßÆÆ½â³öÀ´µÄÒ²Ö»ÊÇ¡¸Âý¼ÓÃܽá¹û¡¹£¬»¹ÐèÔÙÆÆ½âÒ»´Î£¬²ÅÄÜ»¹Ô­³ö¡¸Ã÷ÎÄÃÜÂ롹¡£

ÊÂʵÉÏ£¬¡¸Âý¼ÓÃܽá¹û¡¹Õâ¸öÖмäÖµ£¬ÊDz»¿ÉÄÜÆÆ½â³öÀ´µÄ£¡

ÒòΪËüÊÇÒ»¸öÉ¢ÁÐÖµ ¡ª¡ª ºÁÎÞ¹æÂɵÄËæ»ú´®£¬ÀýÈç 32 λʮÁù½øÖÆ×Ö·û´®£¬¶ø×ֵ䶼ÊÇÓÐÒâÒåµÄ´Ê×飬¼¸ºõ²»¿ÉÄÜÅܵ½Ëü£¡

³ý·Ç×Ö½ÚÖð¸öÇî¾Ù¡£µ«ÕâÓÐ 16^32 ÖÖ×éºÏ£¬ÊǸöÌìÎÄÊý×Ö¡£

ËùÒÔÖмäÖµ£¬ÊÇÎÞ·¨Í¨¹ýÊý¾Ý¿âй¶µÄÃÜÎÄ¡¸ÅÜ¡¹³öÀ´µÄ¡£

²»¹ý£¬¼´Ê¹²»ÖªµÀÕâ¸öÖмäÖµ£¬Ò²Ã»¹ØÏµ¡£¹¥»÷Õß¿ÉÒÔ°Ñǰºó¶ËµÄ hash Ëã·¨£¬×éºÏ³ÉÒ»¸öеģº

f(x) = back_fast_hash( front_slow_hash(x) )

È»ºóÓÃÕâ¸öÐÂËã·¨£¬À´ÅÜ×ֵ䡣ÕâÑù£¬ÀíÂÛÉÏ»¹ÊÇ¿ÉÒÔÅܳöÀ´µÄ¡£

µ«ÊÇ£¬ÆäÖÐÓÐ front_slow_hash Õâ¸öÕϰ­£¬ÅܵÄËÙ¶È£¬¾Í´ó·ù½µµÍÁË¡£

ÓÚÊǾÍÄÜÔö¼Ó¹¥»÷ÕßµÄÆÆ½â³É±¾¡£

0x06 ¶Ô¿¹Ô¤ÏȼÆËã

²»¹ý£¬Ç°¶ËµÄÒ»Çж¼Êǹ«¿ªµÄ¡£ËùÒÔ front_slow_hash µÄËã·¨´ó¼Ò¶¼ÖªµÀ¡£

¹¥»÷Õß¿ÉÒÔÓÃÕâÌ×Ëã·¨£¬°Ñ³£ÓôÊ×éµÄ¡¸Âý¼ÓÃܽá¹û¡¹ÌáǰËã³öÀ´£¬ÖÆ×÷³ÉÒ»¸ö¡¸ÐÂ×ֵ䡹¡£½«À´ÍÏ¿âºó£¬¾Í¿ÉÒÔÖ±½ÓÅÜÕâ¸öÐÂ×ÖµäÁË¡£

¶Ô¿¹ÕâÖÖ·½·¨£¬»¹µÃÓþ­µäµÄÊֶΣº¼ÓÑΡ£×î¼òµ¥µÄ£¬½«Óû§Ãû×÷ΪÑÎÖµ£º

front_slow_hash(password, username)

ÕâÑù£¬¼´Ê¹ÏàͬµÄÃÜÂ룬¶ÔÓÚ²»Í¬µÄÓû§£¬¡¸Âý¼ÓÃܽá¹û¡¹Ò²²»Ò»ÑùÁË¡£

Ò²ÐíÄã»á˵£¬Õâ¸öÑÎÖµ²»ºÏÀí£¬ÒòΪÓû§ÃûÊǹ«¿ªµÄ¡£¹¥»÷Õß¿ÉÒÔ¶Ôij¸öÖØÒªÈËÎïµÄÕ˺ţ¬µ¥¶ÀΪËû½¨Á¢Ò»¸ö×ֵ䡣

ÄÇô£¬ÊÇ·ñ¿ÉÒÔÌṩһ¸öÒþ±ÎµÄÑÎÖµ£¿´ð°¸ÊÇ£º²»¿ÉÒÔ¡£

ÒòΪÕâÊÇÔÚǰ¶Ë¡£Óû§»¹Ã»µÇ¼£¬ÄÇ·µ»ØË­µÄÑÎÖµ£¿µÇ½ǰ¾ÍÄÜ»ñµÃÕ˺ŵÄÑÎÖµ£¬Õâ²»»¹Êǹ«¿ªµÄÂð¡£

ËùÒÔ£¬Ç°¶Ë¼ÓÃܵÄÑÎÖµÎÞ·¨Òþ²Ø£¬Ö»Äܹ«¿ª¡£

µ±È»£¬¼´Ê¹¹«¿ª£¬µ¥¶ÀÌṩһ¸öÑÎÖµ²ÎÊý£¬Ò²±ÈÓû§ÃûÒªºÃ¡£ÒòΪÓû§ÃûÓÀÔ¶²»±ä£¬¶ø¶ÀÁ¢µÄÑÎÖµ¿ÉÒÔ¶¨ÆÚ¸ü»»¡£

ÑÎÖµ¿ÉÒÔÓÉǰ¶ËÉú³É¡£ÀýÈç×¢²áʱ£º

# ǰ¶ËÉú³ÉÑÎÖµ
salt = rand()
password = front_slow_hash(password, salt) # Ìύʱ´øÉÏÑÎÖµ
submit(..., password, salt)

ºó¶Ë½«Óû§µÄÑÎÖµÒ²´¢´æÆðÀ´¡£

µÇ¼ʱ£¬ÊäÍêÓû§Ãû£¬¾Í¿ÉÒÔ¿ªÊ¼²éѯÓû§¶ÔÓ¦µÄÑÎÖµ£º

ÑÎÖµµÄ¸ü»»£¬Ò²·Ç³£¼òµ¥£¬ÉõÖÁ¿ÉÒÔ×Ô¶¯Íê³É£º

ǰ¶ËÔÚ¼ÓÃܵ±Ç°ÃÜÂëʱ£¬Í¬Ê±¿ªÆôÒ»¸öÐÂỊ̈߳¬¼ÆËãÐÂÑÎÖµºÍÐÂÃÜÂë¡£Ìύʱ£¬½«ËüÃÇÈ«¶¼´øÉÏ¡£

Èç¹û¡¸µ±Ç°ÃÜÂ롹ÑéÖ¤³É¹¦£¬ÔòÓá¸ÐÂÃÜÂ롹ºÍ¡¸ÐÂÑÎÖµ¡¹¸²¸Ç¾ÉµÄ¡£

ÕâÑù¸ü»»ÑÎÖµ£¬»¹ÊÇÖ»Óõ½Ç°¶ËµÄËãÁ¦¡£

ÕâÒ»Çж¼ÊÇ×Ô¶¯µÄ£¬Ï൱ÓÚ ÔÚÓû§ÎÞ¸ÐÖªµÄÇé¿öÏ£¬¶¨ÆÚ°ïËû¸ü»»ÃÜÂ룡

ÃÜÎıäÁË£¬Õë¶Ô¡¸Ìض¨ÑÎÖµ¡¹ÖÆ×÷µÄ×ֵ䣬Ҳ¾ÍʧЧÁË¡£¹¥»÷ÕßµÃÖØÐÂÖÆ×÷Ò»´Î¡£

0x07 Ç¿¶È²ßÂÔ

ÃÜÂëѧÉϵÄÎÊÌâµ½´Ë½áÊø£¬ÏÂÃæÌÖÂÛʵÏÖÉϵÄÎÊÌâ¡£

ÏÖʵÖУ¬Óû§µÄËãÁ¦ÊDz»¾ùºâµÄ¡£ÓÐÈËÓõÄÊÇÉñ¼¶ÅäÖã¬Ò²ÓеÄÊǹŶ­»ú¡£ÕâÑù£¬¼ÓÃÜÇ¿¶È¾ÍºÜÄÑÉ趨¡£

Èç¹û¹Å¶­»úÓû§µÇ¼»á¿¨Éϼ¸Ê®Ã룬Äǿ϶¨ÊDz»Ðеġ£¶ÔÓÚÕâÖÖÇé¿ö£¬Ö»ÓÐÒÔÏÂÑ¡Ôñ£º

Ç¿¶È¹Ì¶¨

Ç¿¶È¿É±ä

1.Ç¿¶È¹Ì¶¨

¸ù¾Ý´óÖÚµÄÅäÖã¬Öƶ¨Ò»¸öÊÊÖеÄÇ¿¶È£¬¾ø´ó¶àÊýÓû§¶¼¿É½ÓÊÜ¡£

µ«Èç¹û³¬¹ý¹æ¶¨Ê±¼ä»¹Ã»Íê³É£¬¾Í°ÑËãµ½Ò»°ëµÄ Hash ºÍ²½ÊýÌá½»ÉÏÀ´£¬Ê£Óಿ·ÖÈ÷þÎñÆ÷À´Íê³É¡£

[ǰ¶Ë] Íê³É 70% ----> [ºó¶Ë] ¼ÆËã 30%

²»¹ý£¬ÕâÐèÒª¡¸¿ÉÐòÁл¯¡¹µÄËã·¨£¬²ÅÄÜÔÚ·þÎñ¶Ë»¹Ô­½ø¶È¡£Èç¹û¼ÆËãÖлáÓдóÁ¿µÄÁÙʱÄڴ棬ÕâÖÖ·½°¸¾Í²»¿ÉÐÐÁË¡£

Ïà±È¹ýÈ¥ 100% ºó¶ËÂý¼ÓÃÜ£¬ÕâÖÖÉÙÁ¿Óû§¡¸Ç°ºó²Î°ë¡¹µÄ·½Ê½£¬¿ÉÒÔ½ÚÊ¡²»ÉÙ·þÎñÆ÷×ÊÔ´¡£

¶ÔÓÚÇëÇóЭÖúµÄÓû§£¬Ò²±ØÐëÓÐÒ»¶¨µÄÏÞÖÆ£¬·ÀÖ¹¶ñÒâ͸֧·þÎñÆ÷×ÊÔ´¡£

2.Ç¿¶È¿É±ä

Èç¹ûºó¶Ë²»ÌṩÈκÎЭÖú£¬ÄÇÖ»Äܸù¾Ý×ÔÉíÌõ¼þ×öÈ¡ÉáÁË¡£ÅäÖòîµÄÓû§£¬¾ÍÉÙ¼ÓÃÜÒ»µã¡£

Óû§×¢²áʱ£¬¼ÓÃÜËã·¨²»ÏÞ²½Êý·Å¿ªÅÜ£¬¿´¿´Ìض¨Ê±¼äÀïÄÜËãµ½¶àÉÙ²½£º

# [×¢²á½×¶Î] ËãÁ¦ÆÀ¹À£¨Ïß³Ì 1 ÃëºóÖÐÖ¹£©
while
x = hash(x)
step = step + 1
end

Õâ¸ö²½Êý£¬¾ÍÊǼÓÃÜÇ¿¶È£¬»á±£´æµ½ËûµÄÕ˺ÅÐÅÏ¢Àï¡£

ºÍÑÎÖµÒ»Ñù£¬Ç¿¶ÈÒ²Êǹ«¿ªµÄ¡£ÒòΪÔڵǼʱ£¬Ç°¶Ë¼ÓÃÜÐèÒªÖªµÀÕâ¸öÇ¿¶ÈÖµ¡£

# [µÇ¼½×¶Î] ÏÈ»ñµÃ step
for i = 0 to step
x = hash(x)
end

Õâ¸ö·½°¸£¬¿ÉÒÔÈøßÅäÖõÄÓû§ÏíÊܸü¸ßµÄ°²È«ÐÔ£»µÍÅäÖõÄÓû§£¬Ò²²»»áÓ°Ïì»ù±¾Ê¹Óᣣ¨ÓÃÉϺõçÄÔ»¹ÄÜÌáÉý°²È«ÐÔ£¬ºÜÓÐÓÅÔ½¸Ð°É~£©

µ«ÕâÓиöÖØÒªµÄǰÌ᣺ע²áºÍµÇ¼£¬±ØÐëÔÚÐÔÄÜÏà½üµÄÉ豸ÉÏ¡£

Èç¹ûÊÇÔÚ¸ßÅäÖõçÄÔÉÏ×¢²áµÄÕ˺ţ¬Ä³ÌìÈ¥¹Å¶­»úµÇ¼£¬ÄǾͱ¯¾çÁË£¬¿ÉÄܰëÌì¶¼Ëã²»³öÀ´¡£¡£¡£

3.¶¯Ì¬µ÷Õû·½°¸

ÉÏÊöÇé¿ö£¬ÏÖʵÖÐÊÇÆÕ±é´æÔڵġ£±ÈÈç PC ¶Ë×¢²áµÄÕ˺ţ¬ÔÚÒÆ¶¯¶ËµÇ¼£¬ËãÁ¦¿ÉÄܾͲ»¹»Óá£

Èç¹ûûÓкó¶ËЭÖú£¬ÄÇÖ»Äܵȡ£ÒªÊǾ­³£ÔڵͶËÉ豸Éϵǽ£¬ÄÇÿ´Î¶¼µÃ¸ÉµÈÂð£¿

µÈÒ»Á½´Î¾ÍËãÁË£¬Èç¹ûÿ´Î¶¼µÈ£¬²»ÈçÖØÐ¹ÀÁ¿ÏÂ×Ô¼ºµÄÄÜÁ¦°É¡£°Ñ¼ÓÃÜÇ¿¶È¶¯Ì¬µ÷µÍ£¬¸üºÃµÄÊÊÓ¦µ±Ç°»·¾³¡£

½«À´Èç¹û²»ÓõͶËÉ豸ÁË£¬ÔÙ×Ô¶¯µÄµ÷Õû»ØÀ´¡£ÈüÓÃÜÇ¿¶È£¬Äܶ¯Ì¬ÊÊÓ¦³£ÓõÄÉ豸µÄËãÁ¦¡£

ʵÏÖÔ­Àí£¬ºÍÉÏÒ»½ÚµÄ×Ô¶¯¸ü»»ÑÎÖµÀàËÆ¡£

4.ÒìÏëÌ쿪·½°¸

ÏÂÃæ YY Ò»¸öÄÔ¶´´ó¿ªµÄ·½°¸£¬Ç°ÌáÊÇÍøÕ¾ÓÐ×ã¹»´óµÄ·ÃÎÊÁ¿¡£

Èç¹ûµ±Ç°ÓкܶàÔÚÏßÓû§£¬ËüÃDz»¾ÍÊÇÒ»¶ÑÃâ·ÑµÄ¼ÆËã½ÚµãÂ𣿼ÆËãÁ¿´óµÄÎÊÌ⣬ÈÓ¸øËûÃÇÀ´½â¾ö¡£

²»¹ýÕâÑù×öÒ²ÓÐһЩÒÉÂÇ£¬ÍòÒ»ÕýºÃÍÆË͸øÁË»µÈËÔõô°ì£¿

ÏÔÈ»£¬²»ÄܰÑÌ«¶àµÄÃô¸ÐÊý¾Ý·Å³öÈ¥¡£½ÚµãÖ»¹Ü¼ÆË㣬ÍêÈ«²»ÓÃÖªµÀ¡¢Ò²²»ÄÜÖªµÀÕâ¸öÈÎÎñµÄ×îÖÕÄ¿µÄ¡£

µ«ÊÇ£¬Èç¹ûÓöµ½¶ñ×÷¾ç½Úµã£¬¹ÊÒâ°ÑÊý¾ÝËã´íÔõô°ì£¿

ËùÒÔ²»ÄÜÖ»ÍÆË͸øÒ»¸ö½Úµã¡£¶àÑ¡¼¸¸ö£¬×îÖÕ½á¹ûÒ»Ö²ÅËãÕýÈ·¡£ÕâÑù·çÏÕ¸ÅÂʾͽµµÍÁË¡£

Ïà±È P2P ¼ÆËã£¬ÍøÕ¾ÊÇÓÐÖÐÐÄ¡¢ÊµÃûµÄ£¬¹ÜÀíÆðÀ´»áÈÝÒ×һЩ¡£¶ÔÓÚ¶ñ×÷¾çÓû§£¬¿ÉÒÔ½øÐгͷ££»²ÎÓë¹ý°ïÖúµÄÓû§£¬Ò²¸øÓèÒ»¶¨½±Àø¡£

ÏëÏó¾Íµ½´Ë£¬¼ÌÐøÌÖÂÛʵ¼ÊµÄ¡£

0x08 ÐÔÄÜÓÅ»¯

1.ΪʲôҪÓÅ»¯

»òÐíÄã»áÎÊ£¬¡¸Âý¼ÓÃÜ¡¹²»¾ÍÊÇÏ£Íû¼ÆËã¸üÂýÂð£¬ÎªÊ²Ã´»¹ÒªÈ¥ÓÅ»¯£¿

¼ÙÈçÕâÊÇÒ»¸ö×Ô´´µÄÒþ±ÎʽËã·¨£¬²¢ÇÒ»ìÏýµ½ÍâÈ˸ù±¾ÎÞ·¨¶Á¶®£¬ÄDz»ÓÅ»¯Ò²Ã»Ê¡£ÉõÖÁ¿ÉÒÔÔÚÀïÃæ·ÅһЩ¿ÕÑ­»·£¬¹ÊÒâÏûºÄʱ¼ä¡£

µ«ÊÂʵÉÏ£¬ÎÒÃÇÑ¡ÔñµÄ¿Ï¶¨ÊÇ¡¸ÃÜÂëѧ¼ÒÍÆ¼ö¡¹µÄ¹«¿ªËã·¨¡£ËüÃÇÿһ¸ö²Ù×÷£¬¶¼ÊÇÓÐÊýѧÉϵÄÒâÒåµÄ¡£

Ô­±¾Ò»¸ö²Ù×÷Ö»ÐèÒ»Ìõ CPU Ö¸ÁÒòΪ²»¹»ÓÅ»¯£¬ÓÃÁËÁ½ÌõÖ¸ÁÄÇô¶îÍâµÄʱ¼ä¾ÍÊÇÄںġ£µ¼Ö¼ÓÃÜÓÃʱ¸ü¾Ã£¬Ç¿¶ÈȴδÌáÉý¡£

2.ǰ¶Ë¼ÆËãÈíÀß

Èç¹ûÊDZ¾µØ³ÌÐò£¬¸ù±¾²»Óÿ¼ÂÇÕâ¸öÎÊÌ⣬½»¸ø±àÒëÆ÷¾ÍÐС£

µ«ÔÚ Web »·¾³ÀÎÒÃÇÖ»ÄÜÓÃä¯ÀÀÆ÷¼ÆË㣡Ïà±È±¾µØ³ÌÐò£¬½Å±¾ÒªÂýµÄ¶à£¬Òò´ËÄںĻáºÜ´ó¡£

½Å±¾ÎªÊ²Ã´Âý£¿Ö÷Òª»¹ÊÇÕ⼸µã£º

ÈõÀàÐÍ

½âÊÍÐÍ

ɳÏä

3.ÈõÀàÐÍ

½Å±¾£¬ÊÇÓÃÀ´´¦Àí¼òµ¥Âß¼­µÄ£¬²¢²»ÊÇÓÃÀ´Ãܼ¯¼ÆËãµÄ£¬ËùÒÔû±ØÒªÇ¿ÀàÐÍ¡£

²»¹ýÈç½ñÓÐÁËÒ»¸öºÚ¿Æ¼¼£ºasm.js¡£ËüÄÜͨ¹ýÓï·¨ÌÇ£¬Îª JS Ìá¹©ÕæÕýµÄÇ¿ÀàÐÍ¡£

ÕâÑù¼ÆËãËٶȾʹó·ùÌáÉýÁË£¬¿ÉÒÔ½Ó½ü±¾µØ³ÌÐòµÄÐÔÄÜ£¡

µ«ÊDz»Ö§³Ö asm.js µÄä¯ÀÀÆ÷Ôõô°ì£¿ÀýÈ磬¹úÄÚ»¹ÓдóÁ¿µÄ IE Óû§£¬ËûÃǵÄËãÁ¦ÊǷdz£µÍµÄ¡£

ºÃÔÚ»¹Óиöºó²¹·½°¸ ¡ª¡ª Flash£¬ËüÓи÷ÖÖ¸ßÐÔÄÜÓïÑÔµÄÌØÕ÷¡£ÀàÐÍ£¬×ÔÈ»²»ÔÚ»°Ï¡£

Ïà±È asm.js£¬Flash »¹ÊÇÒªÂýһЩ£¬µ«±È IE »¹ÊÇ¿ì¶àÁË¡£

4.½âÊÍÐÍ

½âÊÍÐÍÓïÑÔ£¬²»½öÐèÒªÓï·¨·ÖÎö£¬¸üÊÇʧȥÁË¡¸±àÒëʱÉî¶ÈÓÅ»¯¡¹´øÀ´µÄÐÔÄÜÌáÉý¡£

ºÃÔÚ Mozilla ÌṩÁËÒ»¸ö¿ÉÒÔ´Ó C/C++ ±àÒë³É asm.js µÄ¹¤¾ß£ºemscripten¡£

ÓÐÁËËü£¬¾Í²»ÓÃÂãдÁË¡£¶øÇÒ±àÒëʱ¾­¹ý LLVM µÄÓÅ»¯£¬Éú³ÉµÄ´úÂëÖÊÁ¿»á¸ü¸ß¡£

ÊÂʵÉÏ£¬Õâ¸ö¸ÅÄîÔÚ Flash ÀïÔçÓÐÁË¡£

Ôø¾­Óиö½Ð Alchemy µÄ¹¤¾ß£¬ÄÜ°Ñ C/C++ ½»²æ±àÒë³É Flash ÐéÄâ»úÖ¸ÁËÙ¶È±È ActionScript ¿ì²»ÉÙ¡£

Alchemy ÏÖÔÚ¸ÄÃû FlasCC£¬»¹ÓпªÔ´°æµÄ crossbridge

5.ɳÏä

һЩ±¾µØÓïÑÔ¿´Ëƺܼòµ¥µÄ²Ù×÷£¬ÔÚɳÏäÀï¾Íδ±ØÈç´Ë¡£ÀýÈçÊý×é²Ù×÷£º

vector[k] = v

ÐéÄâ»úÊ×Ïȵüì²éË÷ÒýÊÇ·ñÔ½½ç£¬·ñÔò»áÓÐÑÏÖØµÄÎÊÌâ¡£

Èç¹û¡¸Ç°¶ËÂý¼ÓÃÜ¡¹Ëã·¨Éæ¼°µ½´óÁ¿ÄÚ´æËæ»ú·ÃÎÊ£¬ÄǾͻáÓкܶàÎÞÒâÒåµÄÄںģ¬Òò´ËµÃÉ÷ÖØ¿¼ÂÇ¡£

²»¹ýÓÐÐ©ÌØÊⳡºÏ£¬½Å±¾ËÙ¶ÈÉõÖÁÄܳ¬¹ý±¾µØ³ÌÐò£¡ÀýÈ翪ͷÌáµ½µÄ MD5 ´óÁ¿·´¸´¼ÆËã¡£

ÕâÆäʵ²»ÄѽâÊÍ£º

Ê×ÏÈ£¬MD5 Ëã·¨ºÜ¼òµ¥¡£Ã»Óвé±íÕâÑùµÄÄÚ´æ²Ù×÷£¬Ê¹ÓõͼÊǾֲ¿±äÁ¿¡£¾Ö²¿±äÁ¿µÄλÖö¼Êǹ̶¨µÄ£¬±ÜÃâÁËÔ½½ç¼ì²é¿ªÏú¡£

Æä´Î£¬emscripten µÄÓÅ»¯ÄÜÁ¦£¬²¢²»±È±¾µØ±àÒëÆ÷²î¡£

×îºó£¬±¾µØ³ÌÐò±àÒëÖ®ºó£¬»úÆ÷Ö¸Áî¾Í²»»áÔÙ±äÁË£»¶øÈç½ñ½Å±¾ÒýÇæ£¬¶¼ÓÐ JIT Õâ¸öÀûÆ÷¡£Ëü»á¸ù¾ÝÔËÐÐʱµÄÇé¿ö£¬ÊµÊ±Éú³É¸üÓÅ»¯µÄ»úÆ÷Ö¸Áî¡£

ËùÒÔÑ¡Ôñ¼ÓÃÜË㷨ʱ£¬»¹µÃ¼æ¹Ëʵ¼ÊÔËÐл·¾³£¬Ñﳤ±Ü¶Ì£¬·¢»Ó³ö×î´ó¹¦Ð§¡£

0x09 ¶Ô¿¹ GPU

ÖÚËùÖÜÖª£¬ÅÜÃÜÂëʹÓà GPU ¿ÉÒÔ¿ìºÜ¶à±¶¡£

GPU ¿ÉÒÔÏëÏó³ÉÒ»¸öÓм¸°ÙÉÏǧºËµÄ´¦ÀíÆ÷£¬µ«Ö»ÄÜÖ´ÐÐһЩ¼òµ¥µÄÖ¸Áî¡£ËäÈ»µ¥ºËËٶȲ»¼° CPU£¬µ«¿ÉÒÔͨ¹ýÊýÁ¿È¡Ê¤¡£

±©Á¦Çî¾Ùʱ£¬¿ÉÒÔ´Ó×ÖµäÀïÈ¡³öÉÏǧ¸ö´Ê»ãͬʱÅÜ£¬ÆÆ½âЧÂʾÍÌá¸ßÁË¡£

ÄÇÄÜ·ñÔÚËã·¨ÀïÌí¼ÓÒ»Ð©ÌØÕ÷£¬ÕýºÃÃüÖÐ GPU µÄÈíÀßÄØ£¿

1.ÏÔ´æÆ¿¾±

´ó¼ÒÌý¹ý˵¡¸À³Ìرҡ¹°É¡£²»Í¬ÓÚ±ÈÌØ±Ò£¬À³ÌرÒÍÚ¿óʹÓÃÁË scrypt Ëã·¨¡£

ÕâÖÖËã·¨¶ÔÄÚ´æÒÀÀµ·Ç³£´ó£¬ÐèҪƵ·±¶Áдһ¸ö±í¡£GPU ËäȻÿ¸öÏ̶߳¼ÄܶÀÁ¢¼ÆË㣬µ«ÏÔ´æÖ»ÓÐÒ»¸ö£¬´ó¼Ò¹²ÏíʹÓá£

ÕâÒâζ×Å£¬Í¬Ê±Ö»ÓÐÒ»¸öÏß³ÌÄܲÙ×÷ÏԴ棬ÆäËûÓÐÐèÒªµÄÖ»ÄܵȴýÁË¡£ÕâÑù£¬¾Í¼«´ó¶ôÖÆÁ˲¢·¢µÄÓÅÊÆ¡£

2.ÒÆÖ²ÄѶÈ

ɽկ±Ò±éµØ¿ª»¨µÄʱºò£¬»¹³öÏÖÁËÒ»¸ö½Ð X11Coin µÄ±Ò£¬¾Ý³ÆÄܶԿ¹ ASIC¡£

ËüµÄÔ­ÀíºÜ¼òµ¥£¬ÀïÃæ²ôÔÓÁË 11 ÖÖ²»Í¬µÄ¼ÓÃÜËã·¨¡£ÕâÑù£¬ÖÆÔì³öÏàÓ¦µÄ ASIC ¸´ÔÓ¶È´ó·ùÔö¼ÓÁË¡£

¾¡¹ÜÕâ²»ÊÇÒ»¸ö³¤¾ÃµÄ¶Ô¿¹·½°¸£¬µ«Ë¼Â·»¹ÊÇ¿ÉÒÔ½è¼øµÄ¡£Èç¹ûÒ»¼þʹýÓÚ¸´ÔÓ£¬ºÜ¶à¹¥»÷Õß¾ÍÍû¶øÉúηÁË£¬²»ÈçÈ¥×ö¸üÈÝÒ×µ½ÊÖµÄÊ¡£

3.ÆäËûÏë·¨

Ö®ËùÒÔ GPU ÄÜ´óÐÐÆäµÀ£¬ÊÇÒòΪĿǰµÄ¼ÓÃÜËã·¨£¬¶¼ÊǼòµ¥µÄ¹«Ê½ÔËËã¡£Õâ¶Ô CPU ²¢Ã»Ì«´óµÄÓÅÊÆ¡£

ÄÜ·ñÉè¼ÆÒ»¸öËã·¨£¬³ä·ÖÒÀÀµ CPU µÄÓÅÊÆ£¿

CPU ÓкܶàÒþ²ØµÄÇ¿ÏÀýÈçÁ÷Ë®Ïß¡£Èç¹ûËã·¨ÖÐÓдóÁ¿µÄÌõ¼þ·ÖÖ§£¬Ò²Ðí GPU ¾Í²»Éó¤ÁË¡£

µ±È»£¬ÕâÀïÖ»ÊÇÉèÏë¡£×Ô¼º´´Ôì¼ÓÃÜËã·¨£¬ÊǷdz£À§Äѵģ¬Ò²²»ÍƼöÕâô×ö¡£

0x0A ¶îÍâÒâÒå

³ýÁËÄܽµµÍÃÜÂëÆÆ½âËÙ¶È£¬Ç°¶ËÂý¼ÓÃÜ»¹ÓÐһЩÆäËûÒâÒ壺

1.¼õÉÙй¶·çÏÕ

Óû§ÊäÈëµÄÃ÷ÎÄÃÜÂ룬ÔÚǰ¶ËÄÚ´æÀï¾ÍÒѼÓÃÜ¡£À뿪ä¯ÀÀÆ÷£¬Ð¹Â¶·çÏÕ¾ÍÒѽáÊø¡£

¼´Ê¹Í¨Ðű»ÇÔÌý£¬»òÊÇ·þÎñÆ÷ÉϵĶñÒâÖмä¼þ£¬¶¼ÎÞ·¨Äõ½Ã÷ÎÄÃÜÂë¡£

³ý·ÇÍøÒ³±¾ÉíÓжñÒâ´úÂ룬»òÊÇÓû§ÏµÍ³´æÔÚ¶ñÒâÈí¼þ¡£

2.ÎÞ·¨Ë½²ØÃ÷ÎÄ

¾¡¹Ü´ó²¿·ÖÍøÕ¾¶¼Éù³Æ£¬²»»á´æ´¢Óû§µÄÃ÷ÎÄÃÜÂë¡£µ«ÕⲢûÓÐÖ¤¾Ý£¬Ò²Ðí˽ÏÂÀïÈÔÔÚÇÄÇÄ´¢´æ¡£

Èç¹ûÔÚǰ¶Ë¼ÓÃÜ£¬ÍøÕ¾¾ÍÎÞ·¨Äõ½Óû§µÄÃ÷ÎÄÃÜÂëÁË¡£

Ò²ÐíÕýÊÇÕâÒ»µã£¬ºÜ¶àÍøÕ¾²»Ô¸ÒâʹÓÃǰ¶Ë¼ÓÃÜ¡£

ÊÂʵÉÏ£¬ÆäÊµÍøÕ¾²»Ô¸ÒâҲû¹ØÏµ£¬ÎÒÃÇ¿ÉÒÔ×Ô¼º×öÒ»¸öµ¥»ú°æµÄÂý¼ÓÃܲå¼þ¡£

µ±Ñ¡ÖÐÍøÒ³ÃÜÂë¿òʱ£¬µ¯³öÎÒÃDzå¼þ¡£ÔÚ²å¼þÀïÊäÈëÃÜÂëºó£¬¿ªÊ¼Âý¼ÓÃܼÆËã¡£×îºó½«½á¹ûÌîÈëÒ³ÃæÃÜÂë¿òÀï¡£

ÕâÑù£¬ËùÓеÄÍøÕ¾¶¼¿ÉÒÔʹÓÃÁË¡£µ±È»£¬ÒÑ×¢²áµÄÕ˺ÅÊDz»Ðе쬵ÃÊÖ¶¯µ÷Õûһϡ£

3.Ôö¼Óײ¿â³É±¾

¡¸Ç°¶ËÂý¼ÓÃÜ¡¹ÐèÒªÏûºÄÓû§µÄ¼ÆËãÁ¦£¬Õâ¸öȱµãÓÐʱҲÊǼþºÃÊ¡£

¶ÔÓÚÕý³£Óû§À´Ëµ£¬µÇ¼ʱ¶àµÈÒ»ÃëÓ°Ïì²¢²»´ó¡£µ«¶ÔÓÚÆµ·±µÇ¼µÄÓû§À´Ëµ£¬Õâ¾ÍÊÇÒ»¸öÕϰ­ÁË¡£

Ë­»áƵ·±µÇ¼£¿Ò²Ðí¾ÍÊÇײ¿â¹¥»÷Õß¡£ËûÃÇÎÞ·¨ÍÏÏÂÕâ¸öÍøÕ¾µÄÊý¾Ý¿â£¬ÓÚÊǾÍÓÃÔÚÏߵǼµÄ·½Ê½£¬²»¶ÏµÄ²âÊÔÈõ¿ÚÁîÕ˺š£

Èç¹ûͨ¹ý IP À´¿ØÖÆÆµÂÊ£¬¹¥»÷Õß¿ÉÒÔÕÒ´óÁ¿µÄ´úÀí ¡ª¡ª ÍøËÙÓжà¿ì£¬¾ÍÄÜÊÔ¶à¿ì¡£

µ«Ê¹ÓÃÁËǰ¶ËÂý¼ÓÃÜ£¬¹¥»÷ÕßÿÊÔÒ»¸öÃÜÂ룬¾ÍµÃÏûºÄ´óÁ¿µÄ¼ÆË㣬ÓÚÊǽ«Æ¿¾±¿¨ÔÚÓ²¼þÉÏ ¡ª¡ª ÄÜËã¶à¿ì£¬²ÅÄÜÊÔ¶à¿ì¡£

ËùÒÔ£¬ÕâÀïÓеãÀàËÆ PoW£¨Proof-of-Work£¬¹¤×÷Á¿Ö¤Ã÷£©µÄÒâÒå¡£¹ØÓÚ PoW£¬ÒÔºóÎÒÃÇ»áÏêϸ½éÉÜ¡£

0x0B ÎÞ·¨×öµ½µÄ

¾¡¹Ü¡¸Ç°¶ËÂý¼ÓÃÜ¡¹Óв»ÉÙÓÅÊÆ£¬µ«Ò²²»ÊÇÍòÄܵġ£

ÉÏÒ»½ÚÒ²Ìáµ½£¬ÄܼõÉÙ·çÏÕ£¬¶ø²»ÊÇÏû³ý·çÏÕ¡£Èç¹û±¾µØ»·¾³ÓÐÎÊÌ⣬ÄÇÈκÎÃÜÂëÊäÈë¶¼ÓзçÏÕ¡£

ÏÂÃæÎÒÃÇÀ´Ë¼¿¼Ò»¸ö³¡¾°£ºÄ³ÍøÕ¾Ê¹ÓÃÁË¡¸Ç°¶ËÂý¼ÓÃÜ¡¹£¬µ«Ã»ÓÐʹÓà HTTPS ¡ª¡ª Õâ»áµ¼ÖÂÁ´Â·±»ÇÔÌý¡£

»Ø¹Ë 0x05 С½Ú£¬Èç¹ûÄõ½¡¸Âý¼ÓÃܽá¹û¡¹£¬¾Í¿ÉÒÔÖ±½ÓµÇÉÏÕ˺ţ¬¼´Ê¹²»ÖªµÀÃ÷ÎÄÃÜÂë¡£

µÄÈ·Èç´Ë¡£µ«Çë×ÐϸÏëÒ»Ï룬Õâ²»Ò²½µµÍËðʧÁËÂð£¿

±¾À´²»½öÕ˺ű»µÁÓ㬶øÇÒÃ÷ÎÄÃÜÂëÒ²»áй¶£»¶øÈç½ñ£¬Ö»ÊÇÕ˺ű»µÁÓã¬Ã÷ÎÄÃÜÂë¶Ô·½ÈÔÎÞ·¨»ñµÃ¡£

ËùÒÔ£¬Ç°¶ËÂý¼ÓÃܵÄÕæÕý±£»¤µÄÊÇ¡¸ÃÜÂ롹¶ø²»ÊÇ¡¸Õ˺𹡣Õ˺ű»µÁ£¬ÃÜÂëÄò»µ½£¡

Èç¹û¹¥»÷Õß²»½öÄÜÇÔÌý£¬»¹ÄÜ¿ØÖÆÁ÷Á¿µÄ»°£¬¾Í¿ÉÒÔÍùÒ³Ãæ×¢Èë¹¥»÷½Å±¾£¬´Ó¶ø»ñµÃÃ÷ÎÄÃÜÂë¡£µ±È»£¬ÕâºÍµçÄÔÖж¾¡¢¼üÅÌ͵¿úÒ»Ñù£¬¶¼ÊôÓÚ¡¸»·¾³ÓÐÎÊÌ⡹£¬²»ÔÚ±¾ÎÄÌÖÂÛ·¶Î§ÄÚ¡£±¾ÎÄÌÖÂÛµÄÊÇÊý¾Ý¿âй¶µÄ³¡¾°¡£

0x0C ¶àÏß³ÌÂý¼ÓÃÜ

Óû§µÄÅäÖÃÔ½À´Ô½ºÃ£¬²»ÉÙ¶¼ÊÇËĺˡ¢°ËºË´¦ÀíÆ÷¡£ÄÜ·ñÀûÓöàÏ̵߳ÄÓÅÊÆ£¬½«Âý¼ÓÃܼÆËã½øÐзֽ⣿

Èç¹ûÿһ²½¼ÆËã¶¼ÒÀÀµÖ®Ç°µÄ½á¹û£¬ÊÇÎÞ·¨½øÐвð½âµÄ¡£ÀýÈ磺

for i = 0 to 10000
x = hash(x)
end

ÕâÊÇÒ»¸ö´®ÐеļÆË㡣Ȼ¶øÖ»Óв¢ÐеÄÎÊÌ⣬²ÅÄÜ·Ö½â³É¶à¸öСÈÎÎñ¡£

²»¹ý£¬»»Ò»ÖÖ·½Ê½µÄ¶àÏß³ÌÒ²ÊÇ¿ÉÒԵġ£ÀýÈçÎÒÃÇʹÓà 4 ¸öỊ̈߳º

# Ïß³Ì 1
x1 = hash(password, salt1)
for i = 0 to 2500
x1 = hash(x1)
end

# Ïß³Ì 2
x2 = hash(password, salt2)
for i = 0 to 2500
x2 = hash(x2)
end

# ...

×îÖÕ½« 4 ¸ö½á¹ûºÏ²¢ÆðÀ´£¬ÔÙ×öÒ»´Î¼ÓÃÜ£¬×÷ΪÂý¼ÓÃܽá¹û¡£

µ«ÕâÑù»áµ¼Ö¸üÈÝÒ×ÆÆ½âÂð£¿Áôןø´ó¼Ò˼¿¼¡£

0x0D ×ܽá

ǰ¶ËÂý¼ÓÃÜ£¬¾ÍÊÇÈÃÿ¸öÓû§¹±Ï×ÉÙÁ¿µÄ¼ÆËã×ÊÔ´£¬Ê¹¼ÓÃܱäµÃ¸üÇ¿¾¢¡£

¼´Ê¹Êý¾Ýй¶£¬ÆäÖÐÒ²Äý¾ÛÁËÈ«ÍøÕ¾Óû§µÄËãÁ¦£¬´Ó¶ø´ó·ùÔö¼ÓÆÆ½â³É±¾¡£

0xFF ºó¼Ç

ǰЩÄê±ÈÌØ±ÒÁ÷ÐÐʱ£¬Í»·¢ÆæÏëÓÃä¯ÀÀÆ÷À´ÍÚ¿ó¡£ËäȻû×ö³É£¬²»¹ý»ñµÃÁËһЩÃÜÂëѧ×ËÊÆ¡£

½üÆÚÖØÐ½øÐÐÁËÕûÀí£¬²¢Ìí¼ÓÁËһЩÐÂÏë·¨£¬ÓÚÊÇдƪÏêϸµÄÎÄÕ·ÖÏíһϡ£

ÒòΪÃÜÂëѧÊôÓÚ´«Í³ÁìÓò£¬ËùÒÔ½áºÏµ±ÏÂÁ÷ÐÐµÄ Web ¼¼Êõ£¬²ÅÄܸüÓÐÐÂÒâ¡£

Èç¹ûÄã¶ÔËã·¨ÓÐÒɻ󣬿ÉÒÔÏÈ×Ðϸ¿´ 0x05 Õâ½Ú¡£

Èç¹ûÄãÊÇÄÍÐÄ¿´Íê±¾Îĵģ¬Ï£ÍûÄÜÓÐÊÕ»ñ:)

   
2037 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

iOSÓ¦Óð²È«¿ª·¢£¬Äã²»ÖªµÀµÄÄÇЩÊÂÊõ
Web°²È«Ö®SQL×¢Èë¹¥»÷
ÒÆ¶¯APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
´ÓGoogle±¸·Ý»¥ÁªÍø¿´¡°Êý¾Ý°²È«¡±
 
Ïà¹ØÎĵµ

web°²È«Éè¼ÆÓë·À»¤
»¥ÁªÍøº£Á¿ÄÚÈݰ²È«´¦Àí¼¼Êõ
ºÚ¿Í¹¥»÷Óë·À·¶¼¼Êõ
WEBºÚºÐ°²È«¼ì²â
 
Ïà¹Ø¿Î³Ì

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

iOSÓ¦Óð²È«¿ª·¢
Web°²È«Ö®SQL×¢Èë¹¥»÷
APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
³õ̽PHPµÄSQL×¢Èë¹¥»÷µÄ¼¼Êõ
´ÓGoogle±¸·Ý¿´¡°Êý¾Ý°²È«¡±

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
×¢²áÐÅÏ¢°²È«×¨ÒµÈËÔ±(CISP)
ÐÅÏ¢°²È«¹ÜÀí
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶

ÖйúÒøÐÐ ÐÅÏ¢°²È«¼¼Êõ¼°Éî¶È·ÀÓù
WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ij²ÆË°ÁìÓòÖªÃûIT·þÎñÉÌ Web°²È«²âÊÔ
ÆÕÈð¿Ë˹ web°²È«Éè¼Æ¡¢²âÊÔÓëÓÅ»¯
±±¾©ºÍÀûʱ ÐÔÄܺͰ²È«ÐÔ²âÊÔ
SUNÖйú¹¤³ÌÑо¿Ôº JSF¿ò¼Ü¡¢°²È«