AES Algorithm


            2. 算法

            AES算法加解密的流程图如下:

            流程图

            AES加密过程涉及到4种操作:

            • 字节替代(SubBytes)
            • 行移位(ShiftRows)
            • 列混淆(MixColumns)
            • 轮密钥加(AddRoundKey)

            解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。加解密中每轮的密钥分别由初始密钥扩展得到。算法中16字节的明文、密文和轮密钥都以一个4x4的矩阵表示。

            2.1 字节替换

            字节代替的主要功能是通过S盒完成一个字节到另外一个字节的映射。

            下图(a)是s盒(使用小s表示),图(b)是s逆盒(s逆使用Markdown不知道怎么表示,使用大S表示)。

            s-box Inverse s-box

            s盒和S逆盒别为16x16的矩阵,即包含了0x00~0xFF所以的字节数值,s-box用于变换。例如 大专栏  AES Algorithm:字节00替换后的值为s[0][0]=63,再通过S即可得到替换前的值,S[6][3]=00。

            /*
            void sub_bytes(uint8_t *state) {                                                                                                                             
                uint8_t i, j;
                uint8_t row, col;
            
                for (i = 0; i < 4; i++) {
                    for (j = 0; j < Nb; j++) {
                        row = (state[Nb*i+j] & 0xf0) >> 4;
                        col = state[Nb*i+j] & 0x0f;
                        state[Nb*i+j] = s_box[16*row+col];
                    }
                }
            }
            
            /*
             * Transformation in the Inverse Cipher that is the inverse of 
             * SubBytes().
             */
            void inv_sub_bytes(uint8_t *state) {
            
                uint8_t i, j;
                uint8_t row, col;
            
                for (i = 0; i < 4; i++) {
                    for (j = 0; j < Nb; j++) {
                        row = (state[Nb*i+j] & 0xf0) >> 4;
                        col = state[Nb*i+j] & 0x0f;
                        state[Nb*i+j] = inv_s_box[16*row+col];
                    }
                }                                                                                                                                                        
            }

            3. 参考

            相关文章
            相关标签/搜索
            管家婆精选心水资料中特网