⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 desde.c

📁 linux下的DES文件加解密
💻 C
字号:
#include <stdio.h>
#include "scertlinux.h"
#include <string.h>

int main(int argc,char *argv[],char *envp[])
{
	unsigned char output[4096];//输出
	unsigned char input[4096];//输入
	int i[4],ret=0;
	int j=0,count=0,filelen=0,tmplen=0;
	FILE *fp,*tmpfp;

	memset(output,0,4096);
	memset(input,0,4096);
	
	//判断是加密还是解密--加密
	if(strcmp(argv[1],"-e")==0)
	{
		//读取要加密的文件
		if((fp=fopen(argv[2],"rb"))==NULL){
			printf("Open InputFile Error!\n");
			return -1;
		}
		//写加密后的文件
		if((tmpfp=fopen(argv[3],"wb"))==NULL){
			printf("Creat DecFile Error!\n");
			return -1;
		}
		//计算文件大小
		fseek(fp,0L,SEEK_END);
		filelen=ftell(fp);
		fseek(fp,0L,SEEK_SET);
		
		//求除数为了共加密多少次
		count=filelen/1024;
		//求余数为了获取剩余没有加密的数据大小
		tmplen=filelen%1024;
		
		//循环加密每次加密1024bit
		for(j=0;j<count;j++)
		{
			memset(input,0,4096);
			memset(output,0,4096);
			//读取文件1024bit,文件指针后移
			fread(input,1,1024,fp);
			//加密后输出数据大小
			i[0]=1024;
			//加密
			ret=Crypt_Dec_Data_Des(input,1024,output,i,"12345678901234567890123456789012");
			//向输出文件写数据
			if(ret!=0)
			{
				printf("Data Dec Error!\n");
				return ret;
			}
			else
				fwrite(output,1,1024,tmpfp);
		}
		//加密剩余数据
		if(tmplen!=0)
		{
			memset(input,0,4096);
			memset(output,0,4096);
			i[0]=tmplen;
			fread(input,1,tmplen,fp);
			ret=Crypt_Dec_Data_Des(input,tmplen,output,i,"12345678901234567890123456789012");
			if(ret!=0){
				printf("Data Dec Error!\n");
				return ret;
			}
			else
				fwrite(output,1,tmplen,tmpfp);
		}
		fclose(fp);
		fclose(tmpfp);
	}
	//判断是加密还是解密--解密
	if(strcmp(argv[1],"-d")==0)
	{
		//打开要解密的文件
		if((fp=fopen(argv[2],"rb"))==NULL){
			printf("Open InFile Error!\n");
			return -1;
		}
		//创建解密文件
		if((tmpfp=fopen(argv[3],"wb"))==NULL){
			printf("Creat EncFile Error!\n");
			return -1;
		}
		//计算加密文件大小
		fseek(fp,0L,SEEK_END);
		filelen=ftell(fp);
		fseek(fp,0L,SEEK_SET);
		//同上
		count=filelen/1024;
		tmplen=filelen%1024;
		for(j=0;j<count;j++){
			memset(input,0,4096);
			memset(output,0,4096);
			fread(input,1,1024,fp);
		i[0]=1024;
		ret=Crypt_Enc_Data_Des(input,1024,output,i,"12345678901234567890123456789012");
		if(ret!=0)
		{
			printf("Data Enc Error!\n");
			return ret;
		}
		else
			fwrite(output,1,1024,tmpfp);
		}
		//同上
		if(tmplen!=0)
		{
			memset(input,0,4096);
			memset(output,0,4096);
			i[0]=tmplen;
			fread(input,1,tmplen,fp);
			ret=Crypt_Enc_Data_Des(input,tmplen,output,i,"");
			if(ret!=0)
			{
				printf("Data Enc Error!\n");
				return ret;
			}
			else
				fwrite(output,1,tmplen,tmpfp);
		}
		fclose(fp);
		fclose(tmpfp);
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -