加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码门户网 (https://www.92codes.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 安全 > 正文

AES加密算法的原理详解与实现分析

发布时间:2020-09-17 11:37:37 所属栏目:安全 来源:网络整理
导读:副标题#e# 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图: 密码学中的高级加密标准(Advanced Encryption Standard

状态矩阵中的元素按照下面的方式映射为一个新的字节:把该字节的高4位作为行值,低4位作为列值,取出S盒或者逆S盒中对应的行的元素作为输出。例如,加密时,输出的字节S1为0x12,则查S盒的第0x01行和0x02列,得到值0xc9,然后替换S1原有的0x12为0xc9。状态矩阵经字节代换后的图如下:

2.字节代换逆操作

逆字节代换也就是查逆S盒来变换,逆S盒如下:

行/列 0 1 2 3 4 5 6 7 8 9 A B C D E F
0   0x52   0x09   0x6a   0xd5   0x30   0x36   0xa5   0x38   0xbf   0x40   0xa3   0x9e   0x81   0xf3   0xd7   0xfb  
1   0x7c   0xe3   0x39   0x82   0x9b   0x2f   0xff   0x87   0x34   0x8e   0x43   0x44   0xc4   0xde   0xe9   0xcb  
2   0x54   0x7b   0x94   0x32   0xa6   0xc2   0x23   0x3d   0xee   0x4c   0x95   0x0b   0x42   0xfa   0xc3   0x4e  
3   0x08   0x2e   0xa1   0x66   0x28   0xd9   0x24   0xb2   0x76   0x5b   0xa2   0x49   0x6d   0x8b   0xd1   0x25  
4   0x72   0xf8   0xf6   0x64   0x86   0x68   0x98   0x16   0xd4   0xa4   0x5c   0xcc   0x5d   0x65   0xb6   0x92  
5   0x6c   0x70   0x48   0x50   0xfd   0xed   0xb9   0xda   0x5e   0x15   0x46   0x57   0xa7   0x8d   0x9d   0x84  
6   0x90   0xd8   0xab   0x00   0x8c   0xbc   0xd3   0x0a   0xf7   0xe4   0x58   0x05   0xb8   0xb3   0x45   0x06  
7   0xd0   0x2c   0x1e   0x8f   0xca   0x3f   0x0f   0x02   0xc1   0xaf   0xbd   0x03   0x01   0x13   0x8a   0x6b  
8   0x3a   0x91   0x11   0x41   0x4f   0x67   0xdc   0xea   0x97   0xf2   0xcf   0xce   0xf0   0xb4   0xe6   0x73  
9   0x96   0xac   0x74   0x22   0xe7   0xad   0x35   0x85   0xe2   0xf9   0x37   0xe8   0x1c   0x75   0xdf   0x6e  
A   0x47   0xf1   0x1a   0x71   0x1d   0x29   0xc5   0x89   0x6f   0xb7   0x62   0x0e   0xaa   0x18   0xbe   0x1b  
B   0xfc   0x56   0x3e   0x4b   0xc6   0xd2   0x79   0x20   0x9a   0xdb   0xc0   0xfe   0x78   0xcd   0x5a   0xf4  
C   0x1f   0xdd   0xa8   0x33   0x88   0x07   0xc7   0x31   0xb1   0x12   0x10   0x59   0x27   0x80   0xec   0x5f  
D   0x60   0x51   0x7f   0xa9   0x19   0xb5   0x4a   0x0d   0x2d   0xe5   0x7a   0x9f   0x93   0xc9   0x9c   0xef  
E   0xa0   0xe0   0x3b   0x4d   0xae   0x2a   0xf5   0xb0   0xc8   0xeb   0xbb   0x3c   0x83   0x53   0x99   0x61  
F   0x17   0x2b   0x04   0x7e   0xba   0x77   0xd6   0x26   0xe1   0x69   0x14   0x63   0x55   0x21   0x0c   0x7d  
二、行移位 1.行移位操作

行移位是一个简单的左循环移位操作。当密钥长度为128比特时,状态矩阵的第0行左移0字节,第1行左移1字节,第2行左移2字节,第3行左移3字节,如下图所示:

2.行移位的逆变换

行移位的逆变换是将状态矩阵中的每一行执行相反的移位操作,例如AES-128中,状态矩阵的第0行右移0字节,第1行右移1字节,第2行右移2字节,第3行右移3字节。

三、列混合 1.列混合操作

列混合变换是通过矩阵相乘来实现的,经行移位后的状态矩阵与固定的矩阵相乘,得到混淆后的状态矩阵,如下图的公式所示:

状态矩阵中的第j列(0 ≤j≤3)的列混合可以表示为下图所示:

(编辑:源码门户网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读