📄 des2.cpp
字号:
#ifndef __wal__Des2_cpp__
#define __wal__Des2_cpp__
#include "des.h"
#include <time.h>
#include <stdio.h>
#include <malloc.h>
#include <memory.h>
#include <stdlib.h>
FILE *fp;
void display(char* str,int len)
{
int i;
for(i=0;i<len;i++)
{
if(i%32==0) fprintf(fp,"\r\n");
fprintf(fp,"%02X ",str[i]&0xFF);
fflush(fp);
if(i%32==0) printf("\r\n");
printf("%02X ",str[i]&0xFF);
}
fprintf(fp,"\r\n\r\n");
fflush(fp);
printf("\r\n\r\n");
}
//lenOut=((datalen+7)/8)*8+16
//1 8 24
//9 16 32
// 32 48
// 96 112
//lenOut应该在头的前面.
//datalen为明文的长度.
int Des2_En(char* Out,char* In,long datalen)
{
char strKey[16];
int desLen=((datalen+7)/8)*8;
int i;
int outLen=desLen+16;
srand(unsigned(time(0)));
for(i=0;i<16;i++)
{
strKey[i]=rand()&0xFF;
}
Des_En(Out,In,datalen,strKey,16);
memcpy((char*)Out+desLen,strKey,16);
// printf("\r\n\r\n:Key:");
// for(i=0;i<16;i++)
// {
// printf("%02X ",strKey[i]&0xFF);
// }
// printf("\r\n\r\n");
// printf("\r\n:outLen:%d",outLen);
// display(Out,outLen);
return 0;
}
//datalen为密文长度.
int Des2_De(char* Out,char* In,long datalen)
{
char strKey[16];
int desLen=datalen-16;
int i;
memcpy(strKey,(char*)In+desLen,16);
Des_De(Out,In,desLen,strKey,16);
// printf("\r\n\r\n:Key:");
for(i=0;i<16;i++)
{
printf("%02X ",strKey[i]&0xFF);
}
// printf("\r\n\r\n");
display(In,datalen-16);
display(Out,datalen);
return 0;
}
int TDes2_En(char* Out,char* In,long datalen)
{
int outLen=((datalen+7)/8)*8+16;
char* MMText=(char*)malloc(outLen);
Des2_En(MMText,In,datalen);
memcpy(Out,MMText,outLen);
free(MMText);
// printf("here");
return 0;
}
int TDes2_De(char* Out,char* In,long datalen)
{
int outlen=datalen-16;
char* MMText=(char*)malloc(datalen);
Des2_De(MMText,In,datalen);
memcpy(Out,MMText,outlen);
free(MMText);
// printf("here");
return 0;
}
int main()
{
int nStatus=0;
int i;
char Source[96]={0};
char Buffer[112]={0};
char MMText1[112]={0};
char MMText2[112]={0};
char MMText3[112]={0};
fp=fopen("log.txt","wb+");
for(i=0;i<96;i++) Source[i]=i&0xFF;
TDes2_En(MMText1 ,Source ,96);
TDes2_De(MMText2 ,MMText1 ,112);
display(Source,96);
display(MMText1,112);
display(MMText2,112);
getchar();
return nStatus;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -