手机分类
  导航: 电脑时代在线 · 程序设计 · C语言 · C语言编程实例
有问题吗?看 疑难解答 电脑术语

S-DES

 
硬件盘点
手机推荐
 
『S-DES』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2005-6-7 

下面是我根据《密码编码学与网络安全:原理与实践》(第二版,电子工业出版社)一书中S-DES编的一个与书上对应的S-DES程序,能通过编译,且正确

 

#include<stdio.h>

main(){

 int i,temp,temp1,a[8],k[10],k1[8],k2[8],t[8],t1[8],t2[8],p4[4],m[8];
 int p10[10]={3,5,2,7,4,10,1,9,8,6};
        int p8[8]={6,3,7,4,8,5,10,9};
        int ip[8]={2,6,3,1,4,8,5,7};
        int ip1[8]={4,1,3,5,7,2,8,6};
        int ep[8]={4,1,2,3,2,3,4,1};
 int s0[4][4]={{1,0,3,2},{3,2,1,0},{0,2,1,3},{3,1,3,2}};
 int s1[4][4]={{0,1,2,3},{2,0,1,3},{3,0,1,0},{2,1,0,3}};
        char c='c';

while(c=='c'||c=='C'){
printf("\n\n\n\n\n\********************************************\n\n");
printf("This is the S-DES program for our BOOK !");
printf("\n\n\nPlease input a[8] 8bit MingWen:");
for(i=0;i<8;i++)
scanf("%1d",&a[i]);
/*  for(i=0;i<8;i++)
    printf("%1d",a[i]); */
printf("\n\nPlease input k[10] 10bit MiShi:");
for(i=0;i<10;i++)
scanf("%1d",&k[i]);
/*  for(i=0;i<10;i++)
    printf("%1d",k[i]); */

/*下面是算K1与K2*/
for(i=0;i<10;i++)
t[i]=k[p10[i]-1];
temp=t[0];
for(i=0;i<9;i++)
t[i]=t[i+1];
t[9]=t[4];
t[4]=temp;
for(i=0;i<8;i++)
k1[i]=t[p8[i]-1];
temp=t[0];
temp1=t[1];
for(i=0;i<8;i++)
t[i]=t[i+2];
t[8]=t[3];
t[9]=t[4];
t[3]=temp;
t[4]=temp1;
for(i=0;i<8;i++)
k2[i]=t[p8[i]-1];

/*下面是两次f函数运算与ip,ip`,SW得最后密文*/
for(i=0;i<8;i++)
t[i]=a[ip[i]-1];

for(i=0;i<8;i++)
t1[i]=t[ep[i]+4-1];
for(i=0;i<8;i++)
t1[i]=t1[i]^k1[i];
temp=s0[t1[0]*2+t1[3>[t1[1]*2+t1[2>;
temp1=s1[t1[4]*2+t1[7>[t1[5]*2+t1[6>;
p4[0]=temp/2;
p4[1]=temp%2;
p4[2]=temp1/2;
p4[3]=temp1%2;
for(i=0;i<4;i++)
t2[i+4]=t1[i]^p4[i];

for(i=0;i<8;i++)
t1[i]=t2[ep[i]+4-1];
for(i=0;i<8;i++)
t1[i]=t1[i]^k2[i];
temp=s0[t1[0]*2+t1[3>[t1[1]*2+t1[2>;
temp1=s1[t1[4]*2+t1[7>[t1[5]*2+t1[6>;
p4[0]=temp/2;
p4[1]=temp%2;
p4[2]=temp1/2;
p4[3]=temp1%2;
for(i=0;i<4;i++)
t2[i]=t1[i]^p4[i];

for(i=0;i<8;i++)
m[i]=t2[ip1[i>;

printf("\nMiWen Shi : ");
for(i=0;i<8;i++)
printf("%d",m[i]);

printf("\n\nC For Continue !\nAny Else Key To Exit !\n");
c=getch();

}/*END while*/

}

 


如果您有什么疑问,可以至论坛提出或者解答他人的疑问   返回页面顶部

】【关闭窗口
·上一篇教程:
·下一篇教程:
·导航: 电脑时代在线 · 程序设计 · C语言 · C语言编程实例
相关文章
 
搞笑自拍|图片故事|美女图库|体坛宝贝|明星爆料|世界奇观|风光摄影|历史回忆|大千世界
Photshop超炫图片
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部  
网站文本地图
  版权所有:电脑时代在线 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2007 www.PCvz.com online services. all rights reserved. 蜀ICP备05015578
Template designed by LaoJiang. Optimized for 1024x768 to Firefox,Opera and MS-IE. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光