好文档 - 专业文书写作范文服务资料分享网站

密码学实验-Feistel网络

天下 分享 时间: 加入收藏 我要投稿 点赞

实验报告

实验五、Feistel网络

实验目的:

1. 熟练掌握Feistel网络结构原理及实现; 2. 掌握Feistel网络结构的应用;

实验内容:

1、 写出平衡Feistel网络结构加密运算的算法、程序设计。在此假定(1)明文的长度为2mbit;

(2)函数f(x,y)=x+y(布尔加);(3)子密钥不变,都等于密钥k,长度为mbit;(4)执行循环次数为r。

2、 当m=16,r=3,k=时给出下列明文的密文:

(1)1111 1111 1111 1111 (2)0000 0000 0000 0000 (3)1111 0000 1111 0000 (4)1010 1010 1010 1010 (5)1101 0001 1111 0011

实验结果:

1平衡的Feistel网络

设x是待加密的明文,长度为2m比特(bit)。平衡的Feistel型分组密码的加密过程如下: (1)将明文x一分为二。设x=L0R0,L0是左边的m比特,R0是右边的m比特。 (2)对于1

(3)密文为y=RrLr.

平衡的Feistel型分组密码的解密过程是加密过程的逆运算。 实验程序如下: #include <> #define max 100 int i,m=8,r,j;

int x[max],y1[max],y2[max],k[max],F[max];

int f(int a,int b) { }

int w(int y1[],int y2[]) { } int main() {

printf(\输入明文:\\n\for (i=0;i<2*m;i++) {

printf(\输入密钥k:\\n\for (i=0;i

scanf(\for (j=0;j<2*m;j++) { }

if(j

x[j]=y1[j];

if(a!=b) return 1; else return 0;

else x[j+m]=y2[j]; return x[j];

}

scanf(\

while(r--) { }

for (i=0;i

for(i=0;i

for (i=0;i

y1[i]=y2[i]; y2[i]=f(y1[i],F[i]); F[i]=f(y2[i],k[i]); if(i

y1[i]=x[i];

else y2[i]=x[i+m];

printf(\printf(\结果为:\\n\for (i=0;i<2*m;i++) { }

printf(\

密码学实验-Feistel网络

实验报告实验五、Feistel网络实验目的:1.熟练掌握Feistel网络结构原理及实现;2.掌握Feistel网络结构的应用;实验内容:1、写出平衡Feistel网络结构加密运算的算法、程序设计。在此假定(1)明文的长度为2mbit;(2)函数f(x,y)=x+y(布尔加
推荐度:
点击下载文档文档为doc格式
67wm012knf9nplx1m54t1j03v4ivcy00ar7
领取福利

微信扫码领取福利

微信扫码分享