📄 desmain.c
字号:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include "des.h"
unsigned char *in_ptr;
unsigned char in[NUM_OF_BLOCKS*BLOCK_SIZE];
extern unsigned char encbuf[];
extern unsigned char decbuf[];
extern des_cblock enc_key1;
extern des_cblock dec_key1;
char en_de = 0;
void main(void)
{
FILE* fpOriginalFile, *fpEncryptFile, *fpDecryptFile;
char OriginalFileName[256], EncryptFileName[256], DecryptFileName[256];
char inkey[64];
int i, cnt;
in_ptr = in;
printf("Select the function.\n");
printf(" 0 - Encrypt\n");
printf(" 1 - Decrypt\n");
printf("Your selection: ");
if(getchar()=='0'){ // 加密
en_de=0;
printf("Encrypt key: ");
scanf("%s", inkey);
for(i=0;i<8;i++){
((char*)enc_key1)[i]=inkey[i];
if(inkey[i]==0)
break;
}
for(;i<8;i++){
((char*)enc_key1)[i]=0;
}
set_key(); // 设置密钥并检查密钥是否弱口令
do{ // 获取原始文件名
printf("Original file name: ");
scanf("%s", OriginalFileName);
}while(!OriginalFileName[0]);
fpOriginalFile = fopen(OriginalFileName, "rb");
if(fpOriginalFile == NULL){
printf("Cannot open the Original file.\npress any key to continue...\n");
getch();
exit(-1);
}
for(i=0;i<256;i++){ // 获取加密文件名
if(OriginalFileName[i]!=0){
EncryptFileName[i]=OriginalFileName[i];
}
else{
EncryptFileName[i]='.';
EncryptFileName[i+1]='d';
EncryptFileName[i+2]='e';
EncryptFileName[i+3]='s';
EncryptFileName[i+4]=0;
break;
}
}
/* do{ // 获取加密文件名
printf("Encrypt file name: ");
scanf("%s", EncryptFileName);
}while(!EncryptFileName[0]);
*/ fpEncryptFile = fopen(EncryptFileName, "wb");
if(fpEncryptFile == NULL){
printf("Cannot open the Encrypt file.\npress any key to continue...\n");
getch();
exit(-2);
}
while(1){
cnt=fread((void*)in, sizeof(char), BLOCK_SIZE*NUM_OF_BLOCKS, fpOriginalFile);
if(cnt<BLOCK_SIZE*NUM_OF_BLOCKS){
for(i=0;i<cnt;i++)
in[i]^=ivec[i];
fwrite((void*)in, sizeof(char), cnt, fpEncryptFile);
break;
}
encrypt(); // 加密
fwrite((void*)encbuf, sizeof(char), cnt, fpEncryptFile);
}
fclose(fpOriginalFile);
fclose(fpEncryptFile);
}
else{ // 解密
en_de=1;
printf("Decrypt key: ");
scanf("%s", inkey);
for(i=0;i<8;i++){
((char*)dec_key1)[i]=inkey[i];
if(inkey[i]==0)
break;
}
for(;i<8;i++){
((char*)dec_key1)[i]=0;
}
set_key(); // 设置密钥并检查密钥是否弱口令
do{ // 获取加密文件名
printf("Encrypt file name: ");
scanf("%s", EncryptFileName);
}while(!EncryptFileName[0]);
DecryptFileName[0]='_';
for(i=0;i<256;i++){ // 获取解密文件名
if(EncryptFileName[i]!=0){
DecryptFileName[i+1]=EncryptFileName[i];
}
else{
EncryptFileName[i]='.';
EncryptFileName[i+1]='d';
EncryptFileName[i+2]='e';
EncryptFileName[i+3]='s';
EncryptFileName[i+4]=0;
DecryptFileName[i+1]=0;
break;
}
}
fpEncryptFile = fopen(EncryptFileName, "rb");
if(fpEncryptFile == NULL){
printf("Cannot open the Encrypt file.\npress any key to continue...\n");
getch();
exit(-2);
}
// do{ // 获取解密文件名
// printf("Decrypt file name: ");
// scanf("%s", DecryptFileName);
// }while(!DecryptFileName[0]);
fpDecryptFile = fopen(DecryptFileName, "wb");
if(fpDecryptFile == NULL){
printf("Cannot open the Decrypt file.\npress any key to continue...\n");
getch();
exit(-3);
}
while(1){
cnt=fread((void*)in, sizeof(char), BLOCK_SIZE*NUM_OF_BLOCKS, fpEncryptFile);
if(cnt<BLOCK_SIZE*NUM_OF_BLOCKS){
for(i=0;i<cnt;i++)
in[i]^=ivec[i];
fwrite((void*)in, sizeof(char), cnt, fpDecryptFile);
break;
}
decrypt(); // 解密
fwrite((void*)decbuf, sizeof(char), cnt, fpDecryptFile);
}
fclose(fpEncryptFile);
fclose(fpDecryptFile);
}
printf("Please press any key to continue...\n");
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -