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

📄 des2.cpp

📁 加密算法.采用定长方式.可逆加密方式.des.混排.钥匙.均在密文中.
💻 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 + -