资源简介
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
相关资源
- DCPcrypt v2 Beta (加密解密控件)
- 加密与解密实战入门配套加密解密程
- 看雪加密解密第三版的实验以及工具
- 大富豪加密解密工具全套
- 各种加壳软件全部版本
- 国密SM4加密解密工具
-
ba
se64加密解密的hive udf函数 - 音频文件加密,解密
- AES加密解密实验报告
- 图像加密解密算法
- Crypto++库实现AES和RSA加密解密
-
xm
l文件加密和解密 - RSA加密解密
- DES加密解密文档
- RSA加密解密网络课程设计
- DES文件加密解密算法实现
- RSA算法加密解密源码及程序完整的工
- AES加密解密详细演示AES加密解密过程
- ENC文件加密解密工具
- APK/ROM加密解密工具
- 基于des的加密解密系统
- 国密加密解密sm4完整版
- 加密解密工具(含程序源码)
- 仿射密码加密解密算法.docx
- AES加密解密GPU程序
- 测试完整的适合做单个学校同学录网
- 图片加密解密程序
- pbfunc外部函数扩展
-
xm
l加密解密工具xm lEncryption - 密码学课程设计:仿射加密解密算法
评论
共有 条评论