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

📄 descalc.c

📁 3DES加解密C源码
💻 C
字号:
/* DES "desk calculator" * Phil Karn * January 1987 */#include <stdio.h>#include <ctype.h>main(){	char key[8],work[8];	char line[80];	int keyset = 0;	char ks[16][8];	if(desinit(0) == -1){		printf("DES initialization failed\n");		exit(1);	}	printf("Enter in hexadecimal:\nk <key>\np <plaintext>\nc <ciphertext>\n");	printf("s - standard DES mode\n");	printf("f - fast mode (no IP)\n"); 	for(;;){		gets(line);		if(feof(stdin))			break;		if(isupper(line[0]))			line[0] = tolower(line[0]);		switch(line[0]){		case 's':			desdone();			desinit(0);			if(keyset)				setkey(ks,key);			break;		case 'f':			desdone();			desinit(1);			if(keyset)				setkey(ks,key);			break;		case 'k':	/* Set key */			get8(&line[1],key);			setkey(ks,key);			keyset = 1;			break;		case 'c':	/* Decrypt ciphertext */			if(!keyset){				printf("Enter key\n");				break;			}			get8(&line[1],work);			dedes(ks,work);			printf("Plaintext: ");			put8(work);			printf("\n");			break;		case 'p':	/* Encrypt plaintext */			if(!keyset){				printf("Enter key\n");				break;			}			get8(&line[1],work);			endes(ks,work);			printf("Ciphertext: ");			put8(work);			printf("\n");			break;		default:			printf("eh?\n");			break;		}	}}get8(buf,cp)char *buf;register char *cp;{	int ikey[8],i;	sscanf(buf,"%2x%2x%2x%2x%2x%2x%2x%2x",&ikey[0],&ikey[1],&ikey[2],		&ikey[3],&ikey[4],&ikey[5],&ikey[6],&ikey[7]);	for(i=0;i<8;i++)		*cp++ = ikey[i];}put8(cp)register char *cp;{	int i;	for(i=0;i<8;i++){		printf("%02x ",*cp++ & 0xff);	}}

⌨️ 快捷键说明

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