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

📄 des3.cpp

📁 三重DES增加了密钥长度
💻 CPP
字号:
#include "des3.h"


int des3_ecb_encrypt(const unsigned char *pt, unsigned char *ct,const unsigned char *key,int keylen)
{
    _ARGCHK(pt != NULL);
    _ARGCHK(ct != NULL);
    _ARGCHK(key != NULL);

	if(keylen != 16)
	{
		printf("Error in 3DES key length");
		return 1;
	}

	unsigned char key1[8],key2[8];
	symmetric_key skey1,skey2;
	int num_rounds = 0;

	int i;
	for(i=0;i<7;i++)
	{
		key1[i] = key[i];
		key2[i] = key[i+8];
	}
	
	if(des_setup(key1, 8, num_rounds, &skey1))
	{
		printf("Set up error!\n");
		return 1;
	}
	if(des_setup(key2, 8, num_rounds, &skey2))
	{
		printf("Set up error!\n");
		return 1;
	}

	int length = 0 ;
	while(pt[length]!='\0')
		length++;

	unsigned char * pp;
	pp = new unsigned char(length);

	des_ecb_encrypt(pt,ct,&skey1);
	des_ecb_decrypt(ct,pp,&skey2);
	des_ecb_encrypt(pp,ct,&skey1);
	return 0;
}

int des3_ecb_decrypt(const unsigned char *pt, unsigned char *ct,const unsigned char *key,int keylen)
{
    _ARGCHK(pt != NULL);
    _ARGCHK(ct != NULL);
    _ARGCHK(key != NULL);

	if(keylen != 16)
	{
		printf("Error in 3DES key length");
		return 1;
	}

	unsigned char key1[8],key2[8];
	symmetric_key skey1,skey2;
	int num_rounds = 0;

	int i;
	for(i=0;i<7;i++)
	{
		key1[i] = key[i];
		key2[i] = key[i+8];
	}
	
	if(des_setup(key1, 8, num_rounds, &skey1))
	{
		printf("Set up error!\n");
		return 1;
	}
	if(des_setup(key2, 8, num_rounds, &skey2))
	{
		printf("Set up error!\n");
		return 1;
	}

	int length = 0 ;
	while(pt[length]!='\0')
		length++;

	unsigned char * pp;
	pp = new unsigned char(length);
	
	des_ecb_decrypt(pt,ct,&skey1);
	des_ecb_encrypt(ct,pp,&skey2);
	des_ecb_decrypt(pp,ct,&skey1);	

	return 0;
}
/*
void main()
{
	unsigned char pt[8]={"0123456"};
	unsigned char ct[8];
	unsigned char ppt[8];
	unsigned char key[16]="012345678901234";

	pt[7]=ct[7]=ppt[7]='\0';
	key[7]=key[15]='\0';
	 
	des3_ecb_encrypt(pt,ct,key,16);
	des3_ecb_decrypt(ct,ppt,key,16);
}
*/

⌨️ 快捷键说明

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