AESËã·¨¼Ó½âÃÜÔ­Àí¼°°²È«ÐÔ·ÖÎö ÏÂÔØ±¾ÎÄ

SubByte()º¯ÊýÊÇÌáȡ״̬¾ØÕóState[4][4]ÖеÄÿһ¸öÊý×éÔªËØ½øÐÐÖû»ÔËË㣬¶øSubWord()ÔòÊÇÌáȡһunsigned long ÕûÐÍÊý×ÖÖеÄij8λÊý¾Ý½øÐÐÖû»ÔËËã¡£SubByte()º¯ÊýµÄCÓïÑÔʵÏÖÓëSubWord()µÄCÓïÑÔʵÏÖÀ×ͬ£¬ÕâÀïÒ²²»ÔÙ׸Êö¡£

£¨2£©Ê¹ÓÃShiftRow()º¯Êý¶Ô״̬¾ØÕóState[4][4] Öеĸ÷ÐÐÊý¾Ý½øÐÐÑ­»·ÒÆÎ»ÔËËã¡£¸Ãº¯ÊýËù½øÐеÄÑ­»·ÒÆÎ»¹æÔòÈçÏ¡£×´Ì¬¾ØÕóState[4][4] ÖеĵÚÒ»ÐÐÊý¾ÝλÖò»±ä£¬µÚ¶þÐÐÊý¾ÝÑ­»·×óÒÆÒ»Î»Êý×Ö£¬µÚÈýÐÐÊý¾ÝÑ­»·×óÒÆÁ½Î»Êý×Ö£¬µÚËÄÐÐÊý¾ÝÑ­»·×óÒÆÈýλÊý×Ö¡£ÔÚ¶ÔShiftRow()º¯Êý½øÐÐCÓïÑÔ±à³ÌʱÖ÷ÒªÊÇҪעÒâÐÐÊýÒÔ¼°Ëù¶ÔÓ¦µÄÒÆÎ»¸öÊý£¬±£Ö¤ÔËËãµÄ׼ȷÐÔ¡£

3¡¢Êý¾Ý½âÃÜ

£¨1£©Ê¹ÓÃInvSubByte()º¯ÊýÒÀ¾ÝSÖû»±íµÄÄæ±í¶Ô״̬¾ØÕóState[4][4]ÖеÄÊý×Ö½øÐÐÖû»£¬Öû»·½·¨ÓëSubByte()º¯ÊýÏàͬ¡£¸Ãº¯ÊýµÄCÓïÑÔʵÏÖÓëSubByte()º¯Êý»ù±¾Ïàͬ£¬Ôڴ˲»ÔÙ׸Êö¡£

£¨2£©Ê¹ÓÃInvShiftRow()º¯Êý¶Ô״̬¾ØÕóState[4][4] Öеĸ÷ÐÐÊý¾Ý½øÐÐÑ­»·ÒÆÎ»ÔËËã¡£¸Ãº¯ÊýËù½øÐеÄÑ­»·ÒÆÎ»¹æÔòÈçÏ¡£×´Ì¬¾ØÕóState[4][4] ÖеĵÚÒ»ÐÐÊý¾ÝλÖò»±ä£¬µÚ¶þÐÐÊý¾ÝÑ­»·ÓÒÒÆÒ»Î»Êý×Ö£¬µÚÈýÐÐÊý¾ÝÑ­»·ÓÒÒÆÁ½Î»Êý×Ö£¬µÚËÄÐÐÊý¾ÝÑ­»·ÓÒÒÆÈýλÊý×Ö¡£

ËÄ¡¢AESʵÏÖ¹ý³Ì·ÖÎö

AES Ëã·¨ÊÇ»ùÓÚÖû»ºÍ´úÌæµÄ£¬Öû»ÊÇÊý¾ÝµÄÖØÐÂÅÅÁУ¬¶ø´úÌæÊÇÓÃÒ»¸öµ¥ÔªÊý¾ÝÌæ»»ÁíÒ»¸ö£¬Æä»ù±¾ÃÜÂëËã·¨RijndaelʹÓõÄÊÇÖû»-×éºÏ¼Ü¹¹£¬¶ø·ÇFeistel¼Ü¹¹¡£AES ÊÇÒ»¸öеĿÉÒÔÓÃÓÚ±£»¤µç×ÓÊý¾ÝµÄ¼ÓÃÜËã·¨¡£AES ʹÓÃÁ˼¸ÖÖ²»Í¬µÄ¼¼ÊõÀ´ÊµÏÖÖû»ºÍÌæ»»¡£Í¨¹ý·Ö×éÃÜÂë·µ»ØµÄ¼ÓÃÜÊý¾Ý µÄλÊýÓëÊäÈëÊý¾ÝÏàͬ¡£µü´ú¼ÓÃÜʹÓÃÒ»¸öÑ­»·½á¹¹£¬ÔÚ¸ÃÑ­»·ÖÐÖØ¸´Öû»£¨permutations £©ºÍÌæ»»(substitutions£©ÊäÈëÊý¾Ý¡£

¶ÔAESËã·¨°´¼ÓÃÜ´¦ÀíºÍÃÜÔ¿µ÷¶ÈÁ½¸ö·½Ãæ½øÐзÖÎö£º

1¡¢¼ÓÃÜ´¦Àí

¼ÓÃÜ´¦Àí¹ý³Ì£º

¼ÓÃÜʱ£¬¸÷ÂÖAES¼ÓÃÜÑ­»·£¨³ý×îºóÒ»ÂÖÍ⣩¾ù°üº¬4¸ö²½Ö裺 £¨1£©¡¢SubBytes ¡ª ͸¹ýÒ»¸ö·ÇÏßÐÔµÄÌæ»»º¯Êý£¬ÓòéÕÒ±íµÄ·½Ê½°Ñÿ¸ö×Ö½ÚÌæ»»³É¶ÔÓ¦µÄ×Ö½Ú¡£

£¨2£©¡¢ShiftRows ¡ª ½«¾ØÕóÖеÄÿ¸öºáÁнøÐÐÑ­»·Ê½ÒÆÎ»¡£

£¨3£©¡¢MixColumns ¡ª ΪÁ˳ä·Ö»ìºÏ¾ØÕóÖи÷¸öÖ±ÐеIJÙ×÷¡£Õâ¸ö²½ÖèʹÓÃÏßÐÔת»»À´»ìºÏÿÐÐÄÚµÄËĸö×Ö½Ú¡£

£¨4£©¡¢AddRoundKey ¡ª ¾ØÕóÖеÄÿһ¸ö×Ö½Ú¶¼Óë¸Ã´ÎÑ­»·µÄ×ÓÃÜÔ¿£¨round key£©×öXORÔËË㣻ÿ¸ö×ÓÃÜÔ¿ÓÉÃÜÔ¿Éú³É·½°¸²úÉú¡£

×îºóÒ»¸ö¼ÓÃÜÑ­»·ÖÐÊ¡ÂÔMixColumns²½Ö裬¶øÒÔÁíÒ»¸öAddRoundKeyÈ¡´ú¡£

SubBytes ²½Öè ÔÚSubBytes²½ÖèÖУ¬¾ØÕóÖи÷×Ö½Ú±»¹Ì¶¨µÄ8λ²éÕÒ±íÖжÔÓ¦µÄÌØ¶¨×Ö½ÚËùÌæ»»,S; bij = S(aij).ÈçͼËùʾ£º

ShiftRows ²½Öè

ÔÚShiftRows ²½ÖèÖÐ,¾ØÕóÖÐÿһÁеĸ÷¸ö×Ö½ÚÑ­»·Ïò×ó·½Î»ÒÆ¡£Î»ÒÆÁ¿ÔòËæ×ÅÐÐÊýµÝÔö¶øµÝÔö¡£ÔÚShiftRows ²½ÖèÖÐ,¾ØÕóÖÐÿһÁеĸ÷¸ö×Ö½ÚÑ­»·Ïò×ó·½Î»ÒÆ¡£Î»ÒÆÁ¿ÔòËæ×ÅÐÐÊýµÝÔö¶øµÝÔö¡£

MixColumns ²½óE

ÔÚ MixColumns ²½ÖèÖУ¬Ã¿¸öÖ±Ðж¼ÔÚmodulo x4 + 1֮ϣ¬ºÍÒ»¸ö¹Ì¶¨¶àÏîʽ c(x) ×÷³Ë·¨¡£

AddRoundKey ²½Öè

AddRoundKey²½Ö裬×ÓÃÜÔ¿½«»áÓëÔ­¾ØÕóºÏ²¢¡£ÔÚÿ´ÎµÄ¼ÓÃÜÑ­»·ÖУ¬¶¼»áÓÉÖ÷ÃÜÔ¿²úÉúÒ»°Ñ×ÓÃÜÔ¿£¨Í¸¹ýRijndaelÃÜÔ¿Éú³É·½°¸²úÉú£©£¬Õâ°Ñ×ÓÃÜÔ¿´óС»á¸úÔ­¾ØÕóÒ»Ñù£¬ÒÔÓëÔ­¾ØÕóÖÐÿ¸ö¶ÔÓ¦µÄ×Ö½Ú×÷Òì»ò£¨¨’£©¼Ó·¨¡£

ÀàÍÆ¼ÌÐø£¬Íê³É10ÂÖÑ­»·£º

2¡¢AESÃÜÔ¿µ÷¶È

ÃÜÔ¿µ÷¶È°üÀ¨Á½¸ö²¿·Ö£ºÃÜÔ¿À©Õ¹ºÍÂÖÃÜԿѡȡ¡£

ÃÜÔ¿bitµÄ×ÜÊý£½·Ö×鳤¶È¡Á£¨ÂÖÊýRound£«1£©ÀýÈçµ±·Ö×鳤¶ÈΪ128bitsºÍÂÖÊýRoundΪ10ʱ£¬ÂÖÃÜÔ¿³¤¶ÈΪ128¡Á(10£«1)£½1408bits¡£

1£©¡¢½«ÃÜÂëÃÜÔ¿À©Õ¹³ÉÒ»¸öÀ©Õ¹ÃÜÔ¿¡£

ÀàÍÆ£¬¾­¹ý10ÂÖ¼ÆË㣬µÃµ½ÈçÏÂÂÖÃÜÔ¿µ÷¶È±í£º

2£©¡¢´ÓÀ©Õ¹ÃÜÔ¿ÖÐÈ¡³öÂÖÃÜÔ¿£ºµÚÒ»¸öÂÖÃÜÔ¿ÓÉÀ©Õ¹ÃÜÔ¿µÄµÚÒ»¸öNb¸ö4×Ö½Ú×Ö£¬µÚ¶þ¸öȦÃÜÔ¿ÓɽÓÏÂÀ´µÄNb¸ö4×Ö½Ú×Ö×é³É£¬ÒÔ´ËÀàÍÆ¡£

Îå¡¢AESµÄ°²È«ÐÔ·ÖÎö

AESËã·¨×÷ΪDESËã·¨ºÍMD5Ëã·¨µÄÌæ´ú²úÆ·£¬10ÂÖÑ­»·µ½Ä¿Ç°ÎªÖ¹»¹Ã»Óб»ÆÆ½â¡£Ò»°ã¶àÊýÈ˵ÄÒâ¼ûÊÇ£ºËüÊÇĿǰ¿É»ñµÃµÄ×ȫµÄ¼ÓÃÜËã·¨¡£AESÓëĿǰʹÓù㷺µÄ¼ÓÃÜËã·¨©¤DESËã·¨µÄ²î„eÔÚÓÚ£¬Èç¹ûÒ»Ãë¿ÉÒÔ½âDES£¬ÔòÈÔÐèÒª»¨ÙM1490000ÒÚÄê²Å¿ÉÆÆ½âAES£¬ÓÉ´Ë¿ÉÖªAESµÄ°²È«ÐÔ¡£AES Òѱ»ÁÐΪ±ÈÈκÎÏÖ½ñÆäËü¼ÓÃÜËã·¨¸ü°²È«µÄÒ»ÖÖËã·¨¡£Ä¿Ç°Õë¶ÔAESµÄÆÆ½âÖ÷Òª¿ÉÒÔ´ÓÒÔϼ¸¸ö·½Ãæ×ÅÊÖ£º

1¡¢±©Á¦ÆÆ½â¡£Èç¹û²»Õë¶ÔËùÓпÉÄܵÄ256λÃÜԿʹÓÃÇ¿Á¦ËÑË÷£¬ÈκÎÒÑ

ÖªµÄÃÜÂë·ÖÎöѧ¹¥»÷¶¼ÎÞ·¨¶ÔAESÃÜÂë½øÐнâÃÜ£¬¾ÍÕâÒ»µãÀ´Ëµ£¬ÓÃAES¼ÓÃÜ