DES-code.rar

  • PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2013-04-12 17:29
    上传日期
Decryption and Encryption Standard
DES-code.rar
  • DES code.txt
    2.9KB
内容介绍
//************************************** // Name: Simplified DES (SDES) [Encryption & Decryption] // Description:To encrypt & Decrypt Binary Information // By: Girish979 // // Inputs:binary Input 8- Bits Ex: 1 0 0 0 1 0 1 1 10 Bit Binary Key Ex: 0 0 0 0 0 1 1 0 1 1 // #include <stdio.h> int l[4],r[4],keys[2][8],ct[8]; void sbox(int sip[],int p[],int sbno,int i) { int sbox[2][4][4]={1,0,3,2,3,2,1,0,0,2,1,3,3,1,3,2,0,1,2,3,2,0,1,3,3,0,1,0,2,1,0,3}; int rw,c,sop; rw = sip[3]+sip[0]*2; c = sip[2]+sip[1]*2; sop = sbox[sbno][rw][c]; //sop gives decimal value of S-Box Output for(;sop!=0;sop/=2) p[i--]=sop%2; } void cmp_fun(int round) { int EP[]={4,1,2,3,2,3,4,1},i,epd[8]; int slip[4],srip[4]; int p[4]={0},p4[]={2,4,3,1},np[4]; for(i=0;i<8;i++) // E/P Permutation epd[i]=r[EP[i]-1]; for(i=0;i<8;i++)//Performing XOR with Key if(i<4) slip[i] = epd[i]^keys[round][i]; // Using Key _ 1=>0 else srip[i-4] = epd[i]^keys[round][i]; sbox(slip,p,0,1);//Calling SBox 1, 0->SBOX 1 sbox(srip,p,1,3);//Calling SBox 1, 1->SBOX 2 for(i=0;i<4;i++) //P4 permutation np[i]=p[p4[i]-1]; for(i=0;i<4;i++) l[i] = l[i]^np[i]; } void left_shift(int keyip[],int nob) { int t1,t2,i; while(nob>0) { t1=keyip[0],t2=keyip[5]; for(i=0;i<9;i++) if(i<4) keyip[i] =keyip[i+1]; else if(i>4) keyip[i] = keyip[i+1]; keyip[4]=t1,keyip[9]=t2; nob--; } } void gen_keys() { int key[10],i,keyip[10]; int p10[]={3,5,2,7,4,10,1,9,8,6},p8[]={6,3,7,4,8,5,10,9}; printf("Enter Key :"); for(i=0;i<10;i++) scanf("%d", &key[i]); for(i=0;i<10;i++) // Permutation P10 keyip[i] = key[p10[i]-1]; left_shift(keyip,1); // Left Shifting (Array,No of bts) printf("\nKey1 :"); for(i=0;i<8;i++){ //Permuting P8 on key1 keys[0][i] = keyip[p8[i]-1];// Key1 Generated!! printf("%d",keys[0][i]); } left_shift(keyip,2);// Generating Key2 . . printf("\nKey2 :"); for(i=0;i<8;i++){ keys[1][i] = keyip[p8[i]-1];// Key2 Generated!! printf("%d",keys[1][i]); } } void En_De(int pt[],int c) { int ip[]={2,6,3,1,4,8,5,7},ipi[]={4,1,3,5,7,2,8,6},t[8],i; for(i=0;i<8;i++)// Performing Permutation on input bits!! if(i<4) l[i]=pt[ip[i]-1]; else r[i-4] = pt[ip[i]-1]; cmp_fun(c);//Round 0+1 using key 0+1 for(i=0;i<4;i++) //Swapping left & right r[i]=l[i]+r[i],l[i]=r[i]-l[i],r[i]=r[i]-l[i]; printf("\n\n"); cmp_fun(!c); // Round 1+1 wid key1+1 wid swapped bits for(i=0;i<8;i++) if(i<4) t[i]=l[i]; else t[i]=r[i-4]; for(i=0;i<8;i++) ct[i] = t[ipi[i]-1]; } void main() { int pt[8]={0},i; printf("Enter plain text binary bits:"); for(i=0;i<8;i++) scanf("%d",&pt[i]); gen_keys(); // Generating Keys key1 & key2 En_De(pt,0); printf("\nCipher Text :"); for(i=0;i<8;i++) printf("%d",ct[i]); //Decrypting - - - En_De(ct,1); printf("\nPlain Text (After Decrypting):"); for(i=0;i<8;i++) printf("%d",ct[i]);
评论
    相关推荐
    • 数据库课程设计
      数据库课程设计使用,使用MFC编写的界面,连接ODBC数据源,方便移植。
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...