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

📄 main.cpp.bak

📁 自己写的对称加密算法实现vc程序des实现
💻 BAK
字号:
#include "des.h"
int main()

	int i;
	unsigned char ct[8],key[8]={'a','b','c','d','a','b','c','d'};
	des_key skey;
	printf("Please enter a hexadecimal integer which is equal to 16 digits:\n");
	char ptHexNum[16];//用16位字符数组保存16位16进制数
	gets(ptHexNum);
	unsigned char ptBinHignNum[8],ptBinLowNum[8];
	//将16位16进制数共64位按内存模型转变成8位字符数组ptNumtoCh中
	unsigned char ptNumtoCh[9];
	ptNumtoCh[8]=ct[8]='\0';
	for(i=0;i<16;i++)
	{
		if(i%2==0)
		{
			switch(ptHexNum[i])//16进制数高位                  
			{
				case'0':ptBinHignNum[i/2]=char(0x00);break;
				case'1':ptBinHignNum[i/2]=char(0x10);break;
				case'2':ptBinHignNum[i/2]=char(0x20);break;
				case'3':ptBinHignNum[i/2]=char(0x30);break;
				case'4':ptBinHignNum[i/2]=char(0x40);break;
				case'5':ptBinHignNum[i/2]=char(0x50);break;
				case'6':ptBinHignNum[i/2]=char(0x60);break;
				case'7':ptBinHignNum[i/2]=char(0x70);break;
				case'8':ptBinHignNum[i/2]=char(0x80);break;
				case'9':ptBinHignNum[i/2]=char(0x90);break;
				case'a':
				case'A':ptBinHignNum[i/2]=char(0xA0);break;
				case'b':
				case'B':ptBinHignNum[i/2]=char(0xB0);break;
				case'c':
				case'C':ptBinHignNum[i/2]=char(0xC0);break;
				case'd':
				case'D':ptBinHignNum[i/2]=char(0xD0);break;
				case'e':
				case'E':ptBinHignNum[i/2]=char(0xE0);break;
				case'f':
				case'F':ptBinHignNum[i/2]=char(0xF0);break;
				default:printf("error...\n");
			}
		}
		if(i%2==1)
		{
			switch(ptHexNum[i])//16进制数低位                   
			{
				case'0':ptBinLowNum[i/2]=char(0x00);break;
				case'1':ptBinLowNum[i/2]=char(0x01);break;
				case'2':ptBinLowNum[i/2]=char(0x02);break;
				case'3':ptBinLowNum[i/2]=char(0x03);break;
				case'4':ptBinLowNum[i/2]=char(0x04);break;
				case'5':ptBinLowNum[i/2]=char(0x05);break;
				case'6':ptBinLowNum[i/2]=char(0x06);break;
				case'7':ptBinLowNum[i/2]=char(0x07);break;
				case'8':ptBinLowNum[i/2]=char(0x08);break;
				case'9':ptBinLowNum[i/2]=char(0x09);break;
				case'a':
				case'A':ptBinLowNum[i/2]=char(0x0A);break;
				case'b':
				case'B':ptBinLowNum[i/2]=char(0x0B);break;
				case'c':
				case'C':ptBinLowNum[i/2]=char(0x0C);break;
				case'd':
				case'D':ptBinLowNum[i/2]=char(0x0D);break;
				case'e':
				case'E':ptBinLowNum[i/2]=char(0x0E);break;
				case'f':
				case'F':ptBinLowNum[i/2]=char(0x0F);break;
				default:printf("error...\n");
			}
		}
	}
	for(i=0;i<8;i++)
	{
		ptNumtoCh[i]=ptBinHignNum[i]^ptBinLowNum[i];
	}	
	
	//校验输入字符变换后是否正确
	for(i=0;i<8;i++)
	{
		printf("%X",int(ptNumtoCh[i]));
	}
	des_setup(key,8,0,&skey);
	
	printf("\nNow The L vector and R vector is followed when program is encrypting:\n\n");
	
	des_ecb_encrypt(ptNumtoCh,ct,&skey);
	
	printf("\nNow The L vector and R vector is followed when program is decrypting:\n\n");
	
	des_ecb_decrypt(ct,ptNumtoCh,&skey);
	
	printf("The hexadecimal integer is followed which is encrypted:\n");
	for(i=0;i<8;i++)
	{
		printf("%X",int(ptNumtoCh[i]));
	}

	printf("The string is followed after encrypted:\n");
	printf("%s\n",ct);

	//system("PAUSE");
	return 0;
}

⌨️ 快捷键说明

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