资源简介
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
- 上一篇:传智播客c/c++教程
- 下一篇:MFC单文档程序连接Access数据库
相关资源
- AES多种加密解密方式C语言方式实现
- 国密算法--Openssl 实现国密算法加密和
- C语言 3DES、AES、RC6、TEA、RSA、MD5、S
- C语言实现的AES加密解密
- C++加解密算法源代码大全
- AES、DES加密算法C语言源码
- C++语言版本的DES加解密应用程序源码
- Vigenere密码实现控制台对文件加解密的
- AES 加解密c++
- AES加密解密系统 VC++6.0 实现
- C语言 stm32 AES加密解密
- ELGamal加解密(c语言实现).zip
- RSA加解密c语言实现.zip
- C++文件加密系统
- md5加密算法 C语言经过测试验证完整版
- ECC加密 RSA加密 C++ 简单实现 不带大数
- AES单片机加密解密 C语言源代码
- RC4加解密 C语言实现
- vigenere密码加密解密算法实现软件Vc
- rc4加密解密算法
- AES任意文件长度加解密C语言实现
- aes加密算法matlab
- AES128 C语言实现源码及应用例程
- CBC模式的DES加密解密程序
- 仿射加密现代密码学
- vc++文件加密程序软件
- 一个简单的移位密码的解密算法
- c语言rc4加密算法调试通过
- C语言实现的文字加密与解密小程序(
- 国密SM4加密解密51单片机版C源程序.
评论
共有 条评论