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¼ÓÃÜ