• 大小: 1.33MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-30
  • 语言: 其他
  • 标签: 加密解密  

资源简介

8位的S-DES加密解密系统,通过输入字符,然后经过加密后输出密文字符。同时也可以输入密文解密出明文。这个是我们密码学的作业我自己写的 并且测试了,没有程序模块没有错误

资源截图

代码片段和文件信息

#include
using namespace std;
void pp(char *numchar *xchar *y)//合并数组
{
for(int i=0;i<5;i++)
{
num[i]=x[i];
num[i+5]=y[i];
}

}

void key(char *k1char *k2)//生成子密钥
{
char elem[10]={‘1‘‘0‘‘1‘‘0‘‘0‘‘0‘‘0‘‘0‘‘1‘‘0‘};//主密钥
char temp1[5];char temp2[5];//S1-LS2-L
int exchange[10]={35274101986};//p10置换数
int px[8]={637485109};//p8置换数
char xx[10];//临时数组
for(int i=0;i<10;i++)
{
xx[i]=elem[(exchange[i]-1)];//p10置换
}
for(int j=0;j<5;j++)//拆分
{
temp1[j]=xx[j];
temp2[j]=xx[j+5];
}
char x=temp1[0];char y=temp2[0];//左移一位
for(int k=0;k<4;k++)
{
temp1[k]=temp1[k+1];
temp2[k]=temp2[k+1];
}
temp1[4]=x;temp2[4]=y;
pp(xxtemp1temp2);//合并
for(int s=0;s<8;s++)//p8置换
{
k1[s]=xx[(px[s]-1)];
}
char a=temp1[0]b=temp1[1];
char c=temp2[0]d=temp2[1];
for(int f=0;f<3;f++)//左移两位
{
temp1[f]=temp1[f+2];
temp2[f]=temp2[f+2];
}
temp1[3]=atemp1[4]=b;
temp2[3]=ctemp2[4]=d;
    pp(xxtemp1temp2);
for(int q=0;q<8;q++)//p8置换
{
k2[q]=xx[(px[q]-1)];
}
}
const int S0[4][4] =                           //S0 Box


     {1 0 3 2}      

     {3 2 1 0}

     {0 2 1 3}

     {3 1 0 2} 

};
const int S1[4][4] =                           //S1 Box


     {0 1 2 3} 

     {2 0 1 3}

     {3 2 1 0}

     {2 1 0 3} 

};
void F(char *xchar *ychar *z)//F函数,x是R0或R1,y是k1或k2
{
int yy[8]={41232341};//E/P扩展码
int ss[4];
int dd[4];
int abc[4]={2431};//P4置换码
char xx[8];char aa[4]bb[4];
    for(int i=0;i<8;i++)//将整型数组转换成字符数组
{
xx[i]=x[(yy[i]-1)];
}
for(int j=0;j<8;j++)//将整型数组转换成字符数组
{
if(xx[j]==y[j])
xx[j]=‘0‘;
else
xx[j]=‘1‘;
}
for(int k=0;k<4;k++)//合并数组
{
aa[k]=xx[k];
bb[k]=xx[k+4];
}
for(int m=0;m<4;m++)//将字符数组转换成整型数组
{
if(aa[m]==‘0‘)
{
ss[m]=0;
}
else
{
ss[m]=1;
}
}
for(int r=0;r<4;r++)//将字符数组转换成整型数组
{
if(bb[r]==‘0‘)
{
dd[r]=0;
}
else
{
dd[r]=1;
}
}
int a=(ss[0])*2+ss[3];//1,4作为行号
int b=(ss[1])*2+ss[2];//2,3作为列号
int c=(dd[0])*2+dd[3];//1,4作为行号
int d=(dd[1])*2+dd[2];//2,3作为列号
int ab=S0[a][b];
int cd=S1[c][d];
int csc[4];char data[4];
csc[0]=(ab/2)%2csc[1]=ab%2csc[2]=(cd/2)%2csc[3]=cd%2;
for(int mp=0;mp<4;mp++)
/*将整型数组转换成字符数组,如果字符数组中的一个元素为
‘0‘,则对应的整型数组中的位置元素为0,反之为1*/
{
if(csc[mp]==0)
data[mp]=‘0‘;
    else if(csc[mp]==1)
    data[mp]=‘1‘;
else
data[mp]=‘ ‘;
}
for(int sh=0;sh<4;sh++)//p4置换
{
z[sh]=data[abc[sh]-1];
}

}
void DES(char *xchar *m)//DES加密
{
int y[8]={26314857};//IP置换码
int z[8]={41357286};//IP~1置换码
//加密使用的临时数组
char L0[4]R0[4]L1[4]R1[4];
char L2[4]R2[4]elem[8]num[8]c[4]d[4];
char k1[8];char k2[8];//子密钥
for(int i=0;i<8;i++)//IP置换
{
elem[i]=x[y[i]-1];
}
for(int j=0;j<4;j++)//拆分数组
{
L0[j]=elem[j];
L1[j]=R0[j]=elem[j+4];
}
key(k1k2);//获取子密钥K1K2
F(R0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     536643  2011-09-13 15:46  S-DES加密解密系统\Debug\s-des.exe

     文件     790200  2011-09-13 15:46  S-DES加密解密系统\Debug\s-des.ilk

     文件     215885  2011-09-13 15:46  S-DES加密解密系统\Debug\s-des.obj

     文件    2002668  2011-09-13 15:46  S-DES加密解密系统\Debug\s-des.pch

     文件    1106944  2011-09-13 15:46  S-DES加密解密系统\Debug\s-des.pdb

     文件      82944  2011-09-13 15:46  S-DES加密解密系统\Debug\vc60.idb

     文件     110592  2011-09-13 15:46  S-DES加密解密系统\Debug\vc60.pdb

     文件     350496  2011-09-09 15:35  S-DES加密解密系统\Debug\加密.ilk

     文件    2001228  2011-09-09 14:54  S-DES加密解密系统\Debug\加密.pch

     文件     541696  2011-09-09 15:35  S-DES加密解密系统\Debug\加密.pdb

     文件       7977  2011-09-13 15:45  S-DES加密解密系统\s-des.cpp

     文件       3391  2011-09-13 15:46  S-DES加密解密系统\s-des.dsp

     文件        535  2011-09-13 15:47  S-DES加密解密系统\s-des.dsw

     文件      41984  2011-09-13 15:47  S-DES加密解密系统\s-des.ncb

     文件      48640  2011-09-13 15:47  S-DES加密解密系统\s-des.opt

     文件        743  2011-09-13 15:46  S-DES加密解密系统\s-des.plg

     文件       4199  2011-09-09 14:47  S-DES加密解密系统\加密.dsp

     文件        533  2011-09-09 14:47  S-DES加密解密系统\加密.dsw

     文件      25600  2011-09-09 15:35  S-DES加密解密系统\加密.ncb

     文件          0  2011-09-09 15:35  S-DES加密解密系统\加密.plg

     目录          0  2011-09-13 15:46  S-DES加密解密系统\Debug

     目录          0  2011-09-13 15:47  S-DES加密解密系统

----------- ---------  ---------- -----  ----

              7872898                    22


评论

共有 条评论