S盒的构造及C语言实现.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
![preview](https://dl-preview.csdnimg.cn/88512766/0001-8542bc6e390db5a7d80f6d1bd16735e7_thumbnail.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
S盒的构造及C语言实现 S盒是AES算法中的一种字节代换技术,用于加密和解密过程中。S盒的构造主要涉及到有限域GF(2)上的乘法逆元和仿射变换。 1. 有限域GF(2)上的乘法逆元 在AES算法中,状态的每一个字节可以以多项式的形式表示成有限域GF(2)上的元素。为了计算乘法逆元,需要先确定一个8次不可约多项式m(x),然后使用这个多项式计算状态字节的乘法逆元。 2. GF(2)仿射变换 仿射变换是对状态字节在有限域GF(2)上的乘法逆元进行字节变换操作。设输入字节为x,则经过仿射变换后的输出字节为y,有下面的变换关系: y = (Ax + b) mod 2^8 其中A是8x8的仿射矩阵,b是8位的常数向量。 3. S盒的C语言实现 S盒的C语言实现主要包括以下几个步骤: 首先,需要定义一个256个元素的数组S_BOX用于存储S盒的值。然后,使用gen_table函数生成S盒的值。 gen_table函数首先计算0-255的可逆项,并存储在pow_tab和log_tab数组中。然后,使用这些可逆项计算mid_tab数组中的值。最后,使用mid_tab数组和仿射变换矩阵b计算S盒的值,并存储在S_BOX数组中。 S盒的C语言实现代码如下: unsigned char S_BOX[256] = {0};//用于存储S盒 void gen_table(void)//实现S盒函数 { unsigned char pow_tab[256]; unsigned char log_tab[256]; unsigned char mid_tab[256]; unsigned char sbx_tab[256]; unsigned char b[8] = {0xf1,0xe3,0xc7,0x8f,0x1f,0x3e,0x7c,0xf8}; int i,j,k,p; //求 0-255的可逆项 for (i =0,p=1;i<256;i++) { pow_tab[i] = p; log_tab[p] = i; p = p^(p<<1)^(p&0x80?0x11b:0) ; } for (i = 0;i<256;i++) { mid_tab[i] = (i?pow_tab[255-log_tab[i]]:0); } //求 0-255的可逆项 并存储在mid_tab中 for (i = 0;i<256;i++) { int t = 0,m = 0,mid = 0,tab = 0; for (j =0;j<8;j++) { m=mid=(b[j]&mid_tab[i]);//实现公式中的b[0]&Ai+b[1]&Ai+… +b[7]&Ai for (k=0;k<8;k++) { int n=(mid>>1) ; if (m!=(n<<1)) { t++; } mid = n; m = mid; } if (t%2>0) { int temp = 1; for (k=0;k<j;k++) { temp = temp<<1; } tab +=temp; } t = 0; } sbx_tab[i] = tab^0x63;//实现公式中的+0x63 } //以下是拷贝存储并打印相关信息 memcpy(S_BOX,sbx_tab,256); } 在这个实现中,使用了多项式表示法和仿射变换来生成S盒的值。同时,也使用了C语言的位运算来实现仿射变换矩阵的乘法。
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 39
- 资源: 1万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)