⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 线性逼近表.cpp

📁 S盒的线性逼近表的运算,可在程序里面修改数值,这是一本密码学的书籍上的题目的运算程序
💻 CPP
字号:
#include<iostream.h> 
#include<stdlib.h> 
#include<iomanip.h> 


void main() 
{ 
int i,j,k,p,q,x,y,z=0,l=0,sum[16][16],flag[8]; 
char f[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 
char flga[4],flgb[4]; 
int a[16][4]={{0,0,0,0},{0,0,0,1},{0,0,1,0},{0,0,1,1},{0,1,0,0},{0,1,0,1},{0,1,1,0},{0,1,1,1}, 
{1,0,0,0},{1,0,0,1},{1,0,1,0},{1,0,1,1},{1,1,0,0},{1,1,0,1},{1,1,1,0},{1,1,1,1}}; 
int b[16][4]={{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1},{1,1,0,0},{0,1,1,0},{0,0,1,1},{1,1,0,1}, 
{1,0,1,0},{0,1,0,1},{1,1,1,0},{0,1,1,1},{1,1,1,1},{1,0,1,1},{1,0,0,1},{0,0,0,0}}; 
int c[16][4]={{1,1,1,0},{0,1,0,0},{1,1,0,1},{0,0,0,1},{0,0,1,0},{1,1,1,1},{1,0,1,1},{1,0,0,0}, 
{0,0,1,1},{1,0,1,0},{0,1,1,0},{1,1,0,0},{0,1,0,1},{1,0,0,1},{0,0,0,0},{0,1,1,1}}; 

for(x=0;x<16;x++) 
for(y=0;y<16;y++) 
{ 
int za=x; 
int zb=y; 
int disps=1<<3; 
for(i=0;i<4;i++) //将a,b转换成四位二进制序列 
{ 
flga[i]=(za&amt;disps ? '1':'0'); 
flgb[i]=(zb&amt;disps ? '1':'0'); 
za<<=1; 
zb<<=1; 
} 

for(i=0;i<16;i++) //计算异或为零的个数。 
{if(((flga[0]&amt;a[0][i])^(flga[1]&amt;a[1][i])^(flga[2]&amt;a[2][i]) 
^(flga[3]&amt;a[3][i])^(flgb[0]&amt;c[0][i])^(flgb[x]&amt;c[1][i]) 
^(flgb[2]&amt;c[2][i])^(flgb[3]&amt;c[3][i]))==0) 
l++;} 

sum[x][y]=l; 
l=0; 
} 

cout<<" * b "<<endl; 
cout<<" * * * * * * * * * * * * * * * * * * * * * * * * * * "<<"\n"; 
cout<<" a * "<<setw(3); 
for(i=0;i<16;i++) 
cout<<f[i]<<setw(3); 
cout<<"\n"<<"* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *"<<"\n"; 
for(i=0;i<16;i++) 
{ 
cout<<" "<<f[i]<<" * "<<setw(3); 
for(j=0;j<16;j++) 
{ 
cout<<sum[i][j]<<setw(3); 
} 
cout<<endl; 
} 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -