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

📄 lokicert.c

📁 LOKI89、LOKI91加密解密算法的源码
💻 C
字号:
/* *	lokicert.c - invoke the LOKI library with data from a certification *		database, to validate its correct operation. * *  Author: Lawrence Brown <lpb@cs.adfa.oz.au>      Dec 1987 *      Computer Science, UC UNSW, Australian Defence Force Academy, *          Canberra, ACT 2600, Australia. * *	Based on PD program by Phil Karn, KA9Q <karn@flash.bellcore.com> * *  Copyright 1989 by Lawrence Brown and UNSW. All rights reserved. *      This program may not be sold or used as inducement to buy a *      product without the written permission of the author. */#include "loki.h"#include <stdio.h>#ifndef lintstatic char rcsid[]  = "$Header: lokicert.c,v 2.1 90/07/18 10:51:41 lpb Exp $";#endifchar	*Name = "";		/* name this program was called by */char	*usage = "lokicert [testfile]";FILE	*filein = stdin;	/* input file to be processed                */main(argc, argv)int	argc;char	**argv;{	char	ikey[20], iplain[20], ianswer[20];	Long	key[2],plain[2],cipher[2],answer[2];	int	test = 0,			/* current test number*/		fail = 0,			/* failure indicator  */		failcnt = 0;			/* count of failures  */	char	buf[256];			/* input buffer, hex block */	/* parse input args if any */	Name = argv[0];	if (argc > 1) {			/* get input file name */        	if ((filein = fopen(argv[1], "r")) == NULL) {                	fprintf(stderr,"%s: unable to open input file %s\n",				Name, argv[1]);			perror(Name);			exit(1);		}	}	while ( fgets(buf, sizeof(buf), filein) != NULL) { /* read next line  */		if (buf[0] == '#')			continue;	/* skip comment lines                 */		test++;	    	sscanf(buf, "%s %s %s", ikey, iplain, ianswer);		get8(ikey, (char *)key);		get8(iplain, (char *)plain);		get8(ianswer, (char *)answer);		printf("Test %2d, ", test);		printf(" K: "); put8((char *)key);		printf(" P: "); put8((char *)plain);		printf(" C: "); put8((char *)answer);		setlokikey((char *)key);		cipher[0] = plain[0]; cipher[1] = plain[1];		enloki((char *)cipher);		fail = 0;		if ((cipher[0] != answer[0]) || (cipher[1] != answer[1])) {			printf("Encrypt failed, got: "); 			put8((char *)cipher);			fail++;		} 		deloki((char *)cipher);		if ((cipher[0] != plain[0]) || (cipher[1] != plain[1])) {			printf("Decrypt failed, got: "); 			put8((char *)cipher);			fail++;		}		if (!fail)			printf("OK");		else			failcnt++;		printf("\n");		fflush(stdout);	}	printf("lokicert: %d failures in %d tests\n", failcnt, test);	exit(failcnt);				/* exit with status set */}get8(inp, cp)char *inp, *cp;{	int i,t[8];	sscanf(inp, "%2x%2x%2x%2x%2x%2x%2x%2x",		&t[0], &t[1], &t[2], &t[3], &t[4], &t[5], &t[6], &t[7]);	for(i=0;i<8;i++){		cp[i] = t[i];	}}put8(cp)char *cp;{	int i;	for(i=0;i<8;i++){		printf("%02x",*cp++ & 0xff);	}	putchar(' ');}

⌨️ 快捷键说明

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