📄 main.cpp
字号:
// 3-Des test
#include "stdafx.h"
#include "des.h"
/*
Author:黄卫立,李谟仁,肖翠萍
Date:2007 6月8日 17时
这个是DES密码体制的调用主程序
密匙Key从目录下的密匙文件key.dat 读取
明文的内容从明文文件plain.dat中读取
密文的内容存储在本地目录文件下的密文文件cipher.dat
*/
#include "stdio.h"
#include "string.h"
#include "memory.h"
#include "fstream"
using namespace std;
char bufer[1024]; //定义了一个1024个字符组来充当计算过程中的临时变量
char key[64]; //定义了一个接受密匙的字符组
char context[1024]; //定义了一个1024个字符的组来存储明文 和密文的空间
void savefile(const char * s,char c);//用来进行文档的写
int main()
{
memset(key,0,sizeof(key)); //把密匙空间清空并置为0
FILE *openfile;
int contextCount=0;
openfile=fopen("key.dat","r"); //打开key文件并获取文件内容
if(!openfile)
{
printf("文件打开错误!\n");
return 0;
}
int keyCount=fread(key,sizeof(char),64,openfile);//获取文件内容并得到文件的大小
printf("Key的大小为:%d\nKey的内容为:\n%s\n\n",keyCount,key);
fclose(openfile);
openfile=0;
char chooser;
int flag=1;
while(flag)
{
memset(bufer, 0, sizeof(bufer)); //把缓存区等清空并置为0
memset(context,0,sizeof(context));//把内容空间清空并置为0
printf("请选择下面的操作步骤 E 加密运算 D解密运算 X退出\n");
scanf("%c",&chooser);
getchar(); //接受回车符
switch(chooser)
{
case 'E':
case 'e':
{
openfile=fopen("plain.dat","rb");//打开明文内容
if(!openfile)
{
printf("明文文件打开失败!\n");
return 0;
}
contextCount=fread(context,sizeof(char),1024,openfile);//获取明文文件内容并得到实际内容的大小
printf("明文的大小为:%d\n明文的内容为:\n%s\n\n",contextCount,context);
fclose(openfile);
openfile=0;
strcpy(bufer,context);
Des_Go(bufer,bufer,contextCount,key,keyCount,ENCRYPT);
printf("加密后的内容为:\n%s\n\n",bufer);
printf("是否保存到文件中(Y,N):");
char c;
scanf("%c",&c);
getchar(); //接受回车符
if(c=='y'||c=='Y')
savefile(bufer,'E');
printf("\n");
break;
};
case 'D':
case 'd':
{
openfile=fopen("cipher.dat","rb");//打开明文内容
if(!openfile)
{
printf("密文文件打开失败!\n");
return 0;
}
contextCount=fread(context,sizeof(char),1024,openfile);//获取明文文件内容并得到实际内容的大小
printf("密文的大小为:%d\n密文的内容为:\n%s\n\n",contextCount,context);
fclose(openfile);
openfile=0;
strcpy(bufer,context);
Des_Go(bufer,bufer,contextCount,key,keyCount,DECRYPT);
printf("解密后的内容为:\n%s\n\n",bufer);
printf("是否保存到文件中(Y,N):");
char c;
scanf("%c",&c);
getchar(); //接受回车符
if(c=='y'||c=='Y')
savefile(bufer,'D');
printf("\n");
break;
}
case 'X':
case 'x':
{flag=0;}
}
}
return 1;
}
void savefile(const char* s,char c)
{
FILE *f;
if(c=='E')
{
f=fopen("cipher.dat","wb");
if(!f)
{
printf("打开文件失败!\n");
return;
}
if(fwrite(s,sizeof(char),strlen(s),f)!=strlen(s))
{
printf("写入文件失败!\n");
}
printf("写入文件成功!\n") ;
}
else
{
f=fopen("plain.dat","wb");
if(!f)
{
printf("打开文件失败!\n");
return;
}
if(fwrite(s,sizeof(char),strlen(s),f)!=strlen(s))
{
printf("写入文件失败!\n");
}
printf("写入文件成功!\n") ;
}
fclose(f);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -