À´Ô´:¿ªÔ´ÖйúÉçÇø
Ô½À´Ô½¶àµÄºÚ¿Í¶¢ÉÏÁËÒÆ¶¯Ó¦Óã¬Ã¿Ìì¶¼»áÔö¼Ó£¬ÒòÎªÒÆ¶¯Ó¦ÓÃÖÐÓкڿ͸ÐÐËȤµÄ¶«Î÷£¬ÈçÓû§Êý¾Ý¡£Ó²±àÂ루Hard-coded£¬×¢£¬¹Ì¶¨Ð´ËÀ£¬²»ÄÜÐ޸ĵģ©°²È«ÃØÔ¿£¬SD ¿¨ÖÐÒÔÃ÷ÎÄ´æ·ÅµÄ¸öÈËÐÅÏ¢£¬Êý¾Ý¿âÖÐδ¼ÓÃÜ´æ´¢µÄÓû§ÃûºÍÃÜÂ룬ÊÕ¼¯µÄ·ÖÎö£¨analytics£©²¢ÒÔÃ÷ÎÄ·½Ê½·¢µ½Ô¶³Ì·þÎñÆ÷£¬ÕâЩÇé¿ö¶¼Ê¹µÃ¹¥»÷¸üÈÝÒ×£¨µÃÊÖ£©¡£
ÕýȷʹÓÃCryptography ¹¤¾ß£¬Äܱ£»¤ÎÒÃǵÄÃô¸ÐÊý¾Ý£¬È·±£Òþ˽ºÍÊý¾ÝÍêÕû¡£ÁíÒ»·½Ãæ,¼ÓÃÜÄÑÓÃÇÒÈÝÒ×ÎóÓ㨠cryptography is hard to use and easy to misuse£©¡£ ×¢ÒâÈÝÒ×±»ÆÆ½âµÄ¼ÓÃÜ·½Ê½£¨broken cryptography£© (È磬ʹÓò»°²È«Ëã·¨£¬»òÓ²±àÂëÃØÔ¿µ½¶þ½øÖưü£©£¬Çë²éÔÄÁбí2014Äê£¬ÒÆ¶¯ÁìÓò10´ó·çÏÕ¡£Òò´Ë£¬´ÓÖеõ½Ê²Ã´½Ìѵ£¿²»ÓüÓÃܲ»¿ÉÈ¡£¬²»ÄÜÕýÈ·¼ÓÃÜͬÑù²»¿ÉÈ¡ (²»ÌáºÄ·ÑµÄʱ¼ä)¡£
ΪÁËÄÜÔÚ°²×¿Æ½Ì¨ÉÏ¿ª·¢³ö°²È«µÄÓ¦Ó㬽ÓÏÂÀ´ÎÒÃǽ«½éÉÜÈçºÎÄܼȼòµ¥ÓÖ°²È«µØ½øÐмÓÃÜ¡£
Ê×ÏÈ£¬¸ÅÀ¨ÐԵؽéÉÜһЩ³£¼ûµÄ¿É¼¯³Éµ½°²×¿Ó¦ÓÃÖеļÓÃܿ⡣¼ÓÃÜ¿âÊǰüº¬ÖîÈç¼ÓÃÜËã·¨¡¢Ìî³ä·½Ê½ºÍÉ¢Áк¯ÊýµÈ¹¤¾ßµÄ¼ÓÃܹ¤¾ß¼¯ºÏ¡£
Bouncy Castle
³äÆø³Ç±¤¾üÍÅ£¨Legion of the Bouncy Castle£©ÊÇÒ»¸öÀ´×Ô°Ä´óÀûÑǵĹ«ÒæÍÅÌ壬ËûÃDZàдÁËBouncy Castle Õâ¸ö¹ã·ºÊ¹ÓõÄÀà¿â¡£¸Ã¿â¼ÈÌṩÁËÒ»¸öÇáÁ¿¼¶µÄÃÜÂëѧ API£¬Ò²ÊÇÒ»¸ö Java ÃÜÂëÀ©Õ¹£¨JCE£©µÄÌṩÕß¡£°²×¿Æ½Ì¨ÒѾÄÚÖÃÁËÒ»¸ö¾«¼ò¹ýµÄÀϰ汾 Bouncy Castle£¨Í¬Ê±ÎªÁËÊÊÅ䰲׿ƽ̨Ҳ×öÁËһЩϸСµÄ¸Ä¶¯£©¡£½á¹û¾ÍÊÇÈκÎÔÚÓ¦ÓóÌÐòÖй¹½¨ºÍʹÓÃ×îа汾 BouncyCastle Àà¿âµÄ³¢ÊÔ¶¼½«µ¼ÖÂÀà¼ÓÔØ³åÍ»¡£
Spongy Castle
Spongy Castle ±³ºóµÄ¶¯»úÊÇÔÊÐí°²×¿¿ª·¢ÕßÔÚÓ¦ÓóÌÐòÖÐʹÓÃÈÎÒâ°æ±¾µÄ BouncyCastle Àà¿â¡£SpongyCastle ¾ÍÊǶÔ×îа汾µÄ BouncyCastle ½øÐÐÁ˼òµ¥µØÖØÐ´ò°ü£»ËùÓÐµÄ org.bouncycastle.* °üÖØÃüÃûΪÁË org.spongycastle.*£¬ËùÓÐ Java°²È« API ÌṩÕßµÄÃû×ÖÓÉ BC ¸ÄΪÁË SC¡£
OpenSSL
OpenSSL ÊÇÒ»¸öʵÏÖÁË SSL ºÍ TLS ÐÒéÒÔ¼°Í¨ÓÃÃÜÂë¿âµÄ¿ªÔ´¹¤¾ß°ü¡£OpenSSL ÒѾ±»ÒÆÖ²µ½ÁËºÜ¶àÆ½Ì¨£¬°üÀ¨°²×¿¡£×öΪһ¸öÌæ´ú·½°¸£¬ÄãÒ²¿ÉÒÔ´ÓÔ´Âë¹¹½¨£¨Ê¹Óð²×¿ NDK£©£¬È»ºó°ó¶¨µ½Ó¦ÓóÌÐòÖС£
ÏÖÔÚÎÒÃǼÙÉè³öÓÚÓ¦ÓóÌÐòµÄÄ¿µÄ£¬ÄãÏëÒª¼ÓÃÜһЩÊý¾Ý¡£Äã»áʹÓÃÄĸö¼ÓÃÜËã·¨£¬AES »¹ÊÇ DES£¿ÄãµÄÃØÔ¿¶à³¤£¬128 »¹ÊÇ 256 ±ÈÌØ£¿Äã»áʹÓÃÄÄÖÖ¼ÓÃÜģʽ£¬ECB »¹ÊÇ CBC£¿Èç¹ûÄã¶ÔËùÓÐÕâЩÎÊÌⶼûÓд𰸣¬Ò²Ã»ÓкõÄÀíÓÉ£¬ÄÇôÄã¿ÉÄÜ·¢ÏÖÄãÕý´¦ÔÚÒ»¸ö΢ÃîµÄλÖã¬ËäÈ»ÄãÓµÓÐËùÓÐÄãÏëÒªµÄ¹¤¾ß£¬µ«ÊÇÄãÒ»µã¶ù¶¼²»È·¶¨Ê¹ÓÃÄĸö¡¢ÈçºÎʹÓá£
ÕâÕýÊÇɵ¹ÏÃÜÂëѧ¹¤¾ß°ü·¢»Ó×÷Óõij¡¾°¡£ÕâЩ¹¤¾ß°ü²¢Ã»ÓÐʵÏÖÈÎºÎÆæÌصļÓÃܹ¦ÄÜ£¬Ò²Ã»Óг¢ÊÔÌæ´úÈÎÒ»ÉÏÊöµÄÃÜÂëѧ¿â£»Ïà·´ËüÃÇ»ùÓÚÕâЩÀà¿â¹¹½¨£¬Î¨Ò»µÄÄ¿µÄÊÇʹµÃʹÓüÓÃܹ¦Äܸü¼òµ¥¸ü°²È«¡£
ÓëͨÓÃÃÜÂëѧ¿âÏà·´£¬ÕâЩ¹¤¾ß°üͨ³£Ö»Ö§³ÖÒ»²¿·ÖËã·¨¡¢Ä£Ê½¡¢½á¹¹¡¢²ÎÊý¡£¶ÔÓÚͨÓüÓÃܹ¤¾ßÐèÒªÉ趨µÄ²¿·Ö£¬ÕâЩ¹¤¾ß°üΪÄãÌṩÁ˺ÏÀíµÄĬÈÏÖµ£¬ÒÔ·ÀÄãÖªµÀÏëҪʲô£¬µ«ÊDz»ÖªµÀÈçºÎʹÓ㬻òÕßÖ»ÔÚºõ×îÖÕÓиö°²È«µÄ½â¾ö·½°¸¡£ÈÃÎÒÃǼì²é¼¸¸öÕâÀ๤¾ß°üÒÔ±ãÀ´¸üºÃµÄÀí½âËüÃǵÄÔËÐйæÔò¡£
Keyczar
Keyczar ÊÇÒ»×鿪Դ¹¤¾ß°ü£¬×î³õÓÉÁ½Î» Google Security Team£¨¹È¸è°²È«ÍŶӣ©³ÉÔ±¿ª·¢¡£ ËüÓà Java£¬Python ºÍ C++ ÓïÑÔʵÏÖ¡£ËüÖ§³Ö¶Ô³Æ¼ÓÃܺͷѶѳɼÓÃÜÁ½ÖÖ¼øÈ¨·½Ê½¡£Keyczar Ìṩ°²È«µÄĬÈÏÉ趨£¬°üÀ¨Ëã·¨£¬ÃØÔ¿³¤¶ÈºÍģʽ£¬ÃØÔ¿Ñ»·ºÍ°æ±¾»¯£¬³õʼÏòÁ¿£¨vector£©ºÍÊÚȨÂë×Ô¶¯Éú³É£¬Ö§³Ö¹ú¼Ê»¯¡£¸Ã¹¤¾ß°ü»ùÓÚJCE¹¹½¨,( here)£¬Ê¹ÓÃÁËSpongy CastleµÄ°²È«Ìṩ³ÌÐò¡£
AeroGear Crypto
AeroGear Crypto ÊÇ AeroGear ÌṩµÄÒ»¸öСµÄ Java ¿â¡£ ËüÖ§³Ö¿ÉÈÏÖ¤µÄ¶Ô³Æ¼ÓÃÜ£¬ÍÖÔ²ÇúÏß¼ÓÃÜ£¬»ùÓÚÃÜÂëµÄÃØÔ¿ÍÆµ¼¡£ËüÒ²ÌṩÁËËã·¨µÄÏÔʽÉ趨¡£AeroGear Crypto ÔÚ android ƽ̨ÒÀÀµSpongy Castle£¬ÔÚÆäËûƽ̨ÉÏÒÀÀµ Bouncy Castle¡£¸Ã¿âÔÚ iOS£¬Windows Phone ºÍ Cordova ÉÏͬÑù¿ÉÓá£
Conceal
ΪÁËÄܹ»¿ìËÙ²¢Ê¹ÓúÜÉÙÄÚ´æ¶ÔSD¿¨ÉϵĴóÐÍÎļþʵÏÖ¼ÓÃܺÍÈÏÖ¤£¬Á³Æ×¿ª·¢³öÁË Conceal¡£Conceal¼È¿ÉÒÔ½øÐÐÈÏÖ¤£¬Ò²¿ÉÒÔ½øÐмÓÃÜ£¬Í¬Ê±Ä¬ÈÏÒ²ÌṩÁËÃÜÔ¿¹ÜÀí¹¦ÄÜ¡£ËüʹÓõÄÊÇ OpenSSL£¬²»¹ý½ö°üº¬×Ô¼ºÐèÒªµÄÄDz¿·Ö£¬Òò´ËÆä´óС½öΪ 85KB¡£Conceal Õ¾µãÉϹ«²¼µÄ½á¹ûÏÔʾËüÓÅÓÚ Bouncy Castle¡£
ϱí¶ÔÉÏÃæËù½éÉܵļÓÃÜ¿â×öÁË×ܽᡣÇë×¢Ò⣺ÉÏÃæ½éÉܵÄËùÓеĿâ¿ÉÒÔÈüÓÃÜ·½ÃæµÄÐÂÊÖ°²È«µØ½øÐмÓÃÜ£¬²»¹ý¸ß¼¶¿ª·¢ÈËÔ±¿ÉÒÔ²»Ê¹ÓÃÕâЩĬÈÏ×ö·¨£¬¿ÉÒÔ°´ÕÕ×Ô¼ºµÄÒâÔ¸Ö¸¶¨ËùÓеļÓÃÜϸ½Ú£¨¾ÍÏñËûÃÇÔÚʹÓÃÆäËû¼ÓÃÜ¿âÄÇÑù£©¡£
¼ÓÃÜ¿â
¿ª·¢¹«Ë¾
Ðí¿ÉÖ¤
AeroGear Crypto
AeroGear
Apache 2.0
Conceal
Facebook
BSD
Keyczar
-
Apache 2.0
×ܽᣨTo sum up£©
Èç¹ûÄãÊÇÒ»¸öÒÆ¶¯Ó¦Óÿª·¢Õߣ¬ÄãµÃ»¨Ê±¼ä£¨¾«Á¦£©Ê¹ÄãµÄÓ¦ÓóÌÐò±ãÓÚʹÓ㬹¦Äܷḻ£¬×¥ÈËÑÛÇò£¬µ«ÊÇ£¬Äã²»ÒªÍüÁ˸ÄÉÆÄãÓ¦ÓõݲȫÐÔ¡£ Èç¹ûÄã²»¶®Ôõô×ÅÊÖ£¬»òÕßµ£ÐÄ×ö²»¶Ô£¬ÄǾʹÓÎÄÖÐÌáµ½µÄ¹¤¾ß°üÖÐÑ¡ÔñÒ»¸ö£¬ÒÔ±ãÄܹ»¿ªÊ¼¡£²»¹ÜÄã¾ö¶¨Ñ¡ÓÃÄĸö¼ÓÃܹ¤¾ß¶¼ºÃ£¬¶¼Ó¦±ÜÃâ×Ô¼ºÊµÏÖ¼ÓÃÜËã·¨ºÍ¼ÓÃÜÐÒ飻 Ó¦¸ÃֻʹÓÃÄÇЩ¹ã·ºÓ¦Óõ쬯ձéÈϿɵ쬾ÊÜ¿¼ÑéµÄËã·¨ºÍÐÒé¡£