• 大小:
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: C/C++
  • 标签: des  加密  解密  

资源简介

C++ DES图像加密与解密

资源截图

代码片段和文件信息

#include 
#include 
#include 

using namespace std;

#include 

int K1[49]K2[49]K3[49]K4[49]K5[49]K6[49]K7[49]K8[49]K9[49]K10[49]K11[49]K12[49]K13[49]K14[49]K15[49]K16[49];
int R0[33]L0[33]t1[65]m[65]k[65];

void Encode(void);
void Decode(void);
void initial(void);
void desEncode(void);
void desDecode(void);

void main()
{
Encode();
Decode();
}

void Encode(void)
{
FILE *fp1*fp2*fp3;
unsigned char temp[8];
int hijstr[8]flag=0;
char ch;
string fp1n;
// fp1=fopen(“001.bmp““rb“);

cout<<“Input the name of the file you want to encode.“< cin>>fp1n;

fp1=fopen(fp1n.c_str()“rb“);
fp2=fopen(“key.txt““rb“);
fp3=fopen(“cipher.bmp““wb“);

for(i=0;i<8;i++)     //make k
{
ch=fgetc(fp2);
for(j=0;j<8;j++)
{
temp[j]=ch%2;
ch=ch/2;
}
j=i*8;
j++;
for(h=7;h>=0;h--j++)
{
k[j]=temp[h];
}
}
for(i=1;i<36;i++)
{
for(j=0;j<4;j++)
{
temp[0]=fgetc(fp1);
fputc(temp[0]fp3);
}
}
while(!flag)
{
for(i=0;i<8;i++)
{
if(!feof(fp1))
{
temp[i]=fgetc(fp1);
}
else
{
flag=1;
break;
}
}
if(flag)       //Bu Qi 8 Byte
{
for(;i<8;i++)
{
temp[i]=0;
}
}
for(i=0;i<8;i++)            //make m
{
for(j=0;j<8;j++)
{
str[j]=temp[i]%2;
temp[i]=temp[i]/2;
}
h=i*8;
h++;
for(j=7;j>=0;j--h++)
{
m[h]=str[j];
}
}
initial();
desEncode();
for(i=0;i<=7;i++)
{
temp[i]=0;
for(j=8;j>=1;j--)
{
temp[i]=temp[i]+t1[i*8+j]*(int)pow(28-j);
}
fputc(temp[i]fp3);
}
}

fclose(fp1);
fclose(fp2);
fclose(fp3);
}

void Decode(void)
{
FILE *fp1*fp2*fp3;
unsigned char temp[8];
int hijstr[8]flag=0;
char ch;
fp1=fopen(“cipher.bmp““rb“);
fp2=fopen(“key.txt““rb“);
fp3=fopen(“plain.bmp““wb“);

for(i=0;i<8;i++)     //make k
{
ch=fgetc(fp2);
for(j=0;j<8;j++)
{
temp[j]=ch%2;
ch=ch/2;
}
j=i*8;
j++;
for(h=7;h>=0;h--j++)
{
k[j]=temp[h];
}
}
for(i=1;i<36;i++)
{
for(j=0;j<4;j++)
{
temp[0]=fgetc(fp1);
fputc(temp[0]fp3);
}
}
while(!flag)
{
for(i=0;i<8;i++)
{
if(!feof(fp1))
{
temp[i]=fgetc(fp1);
}
else
{
flag=1;
break;
}
}
if(flag)       //Bu Qi 8 Byte
{
for(;i<8;i++)
{
temp[i]=0;
}
}
for(i=0;i<8;i++)            //make t1[]
{
for(j=0;j<8;j++)
{
str[j]=temp[i]%2;
temp[i]=temp[i]/2;
}
h=i*8;
h++;
for(j=7;j>=0;j--h++)
{
t1[h]=str[j];
}
}
initial();
desDecode();
for(i=0;i<=7;i++)
{
for(j=8;j>=1;j--)
{
temp[i]=temp[i]+t1[i*8+j]*(int)pow(28-j);
}
fputc(temp[i]fp3);
}
}

fclose(fp1);
fclose(fp2);
fclose(fp3);
}

void initial(void)//生成明文的IP和密钥的16个子密钥
{
int m1[65]ik0[57]C[57];
int C0[29]D0[29

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

    .......      3377  2007-11-07 20:52  ECB\work.dsp

    .......     50176  2007-11-14 20:15  ECB\work.ncb

    .......       834  2007-11-11 08:21  ECB\work.plg

    .......       533  2007-11-07 21:50  ECB\work.dsw

    .......         8  2007-11-14 10:08  ECB\key.txt

    .......         8  2007-11-08 20:40  ECB\head.txt

    .......     20548  2007-11-14 20:15  ECB\plain.bmp

    ....SH.     31744  2007-11-14 20:18  ECB\Thumbs.db

    .......     58434  2007-11-11 08:21  ECB\work.cpp

    .......     20540  2007-11-14 20:15  ECB\cipher.bmp

    .......     20538  2007-09-06 07:54  ECB\1.bmp

    .......     54784  2007-11-14 20:15  ECB\work.opt

     目录          0  2007-11-14 19:35  ECB

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

               261524                    13


评论

共有 条评论