资源简介
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
相关资源
- PNG加密解密工具73383
- 密码学课程设计:DES加密解密算法的
- 易语言RC4加密解密源码
- 易语言字节集加密解密对比源码
- 易语言文本加密解密源码
- 易语言TEA加密解密源码
- 易语言QQ加密解密1.5
- IBM针对中型企业磁带加密解决方案T
- AES for Delphi 加密解密
- MD5加密解密算法demo
- 飘零封包加密解密工具
- WPE封包截取工具和数据加密解密教程
- pbfunc外部函数扩展 2015-05-03
- Delphi AES加密算法程序.rar
- AES_加密解密控件源代码Delphi.rar
- PGP freeware 6.5.8 Win32 加密解密工具,学
- PDF 解锁工具V3.0 汉化版
- AES-128加密解密源码及算法详解。
- 网络安全课程设计des加密解密
- 基于OpenSSL的一个加密解密小工具,有
- DES加密解密网络安全传输系统
- pbfunc外部函数扩展(1.2.2.10) 2016-04
- 加密解密算法工具集
- led屏发布系统 通信加密解密 socket通
- iOS加密解密之rsa完整代码
- PGP Command Line 使用教程
- 前台加密后台解密-非对称RSA加密方式
- RC5加密解密
- DCPcrypt v2 Beta (加密解密控件)
- 加密与解密实战入门配套加密解密程
评论
共有 条评论