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

📄 speed.c

📁 一个用于点对点传输加密的工具包源码
💻 C
📖 第 1 页 / 共 3 页
字号:
/* apps/speed.c *//* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. *  * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to.  The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code.  The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). *  * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software *    must display the following acknowledgement: *    "This product includes cryptographic software written by *     Eric Young (eay@cryptsoft.com)" *    The word 'cryptographic' can be left out if the rouines from the library *    being used are not cryptographic related :-). * 4. If you include any Windows specific code (or a derivative thereof) from  *    the apps directory (application code) you must include an acknowledgement: *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" *  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. *  * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed.  i.e. this code cannot simply be * copied and put under another distribution licence * [including the GNU Public Licence.] *//* most of this code has been pilfered from my libdes speed.c program */#undef SECONDS#define SECONDS		3	#define RSA_SECONDS	10#define DSA_SECONDS	10/* 11-Sep-92 Andrew Daviel   Support for Silicon Graphics IRIX added *//* 06-Apr-92 Luke Brennan    Support for VMS and add extra signal calls */#undef PROG#define PROG speed_main#include <stdio.h>#include <stdlib.h>#include <signal.h>#include <string.h>#include <math.h>#include "apps.h"#ifdef NO_STDIO#define APPS_WIN16#endif#include <openssl/crypto.h>#include <openssl/rand.h>#include <openssl/err.h>#if defined(__FreeBSD__)# define USE_TOD#elif !defined(MSDOS) && (!defined(VMS) || defined(__DECC))# define TIMES#endif#if !defined(_UNICOS) && !defined(__OpenBSD__) && !defined(sgi) && !defined(__FreeBSD__) && !(defined(__bsdi) || defined(__bsdi__)) && !defined(_AIX) && !defined(MPE)# define TIMEB#endif#ifndef _IRIX# include <time.h>#endif#ifdef TIMES# include <sys/types.h># include <sys/times.h>#endif#ifdef USE_TOD# include <sys/time.h># include <sys/resource.h>#endif/* Depending on the VMS version, the tms structure is perhaps defined.   The __TMS macro will show if it was.  If it wasn't defined, we should   undefine TIMES, since that tells the rest of the program how things   should be handled.				-- Richard Levitte */#if defined(VMS) && defined(__DECC) && !defined(__TMS)#undef TIMES#endif#ifdef TIMEB#include <sys/timeb.h>#endif#if !defined(TIMES) && !defined(TIMEB) && !defined(USE_TOD)#error "It seems neither struct tms nor struct timeb is supported in this platform!"#endif#if defined(sun) || defined(__ultrix)#define _POSIX_SOURCE#include <limits.h>#include <sys/param.h>#endif#ifndef NO_DES#include <openssl/des.h>#endif#ifndef NO_MD2#include <openssl/md2.h>#endif#ifndef NO_MDC2#include <openssl/mdc2.h>#endif#ifndef NO_MD4#include <openssl/md4.h>#endif#ifndef NO_MD5#include <openssl/md5.h>#endif#ifndef NO_HMAC#include <openssl/hmac.h>#endif#include <openssl/evp.h>#ifndef NO_SHA#include <openssl/sha.h>#endif#ifndef NO_RIPEMD#include <openssl/ripemd.h>#endif#ifndef NO_RC4#include <openssl/rc4.h>#endif#ifndef NO_RC5#include <openssl/rc5.h>#endif#ifndef NO_RC2#include <openssl/rc2.h>#endif#ifndef NO_IDEA#include <openssl/idea.h>#endif#ifndef NO_BF#include <openssl/blowfish.h>#endif#ifndef NO_CAST#include <openssl/cast.h>#endif#ifndef NO_RSA#include <openssl/rsa.h>#include "./testrsa.h"#endif#include <openssl/x509.h>#ifndef NO_DSA#include "./testdsa.h"#endif/* The following if from times(3) man page.  It may need to be changed */#ifndef HZ# ifndef CLK_TCK#  ifndef _BSD_CLK_TCK_ /* FreeBSD hack */#   define HZ	100.0#  else /* _BSD_CLK_TCK_ */#   define HZ ((double)_BSD_CLK_TCK_)#  endif# else /* CLK_TCK */#  define HZ ((double)CLK_TCK)# endif#endif#undef BUFSIZE#define BUFSIZE	((long)1024*8+1)int run=0;static double Time_F(int s, int usertime);static void print_message(char *s,long num,int length);static void pkey_print_message(char *str,char *str2,long num,int bits,int sec);#ifdef SIGALRM#if defined(__STDC__) || defined(sgi) || defined(_AIX)#define SIGRETTYPE void#else#define SIGRETTYPE int#endif static SIGRETTYPE sig_done(int sig);static SIGRETTYPE sig_done(int sig)	{	signal(SIGALRM,sig_done);	run=0;#ifdef LINT	sig=sig;#endif	}#endif#define START	0#define STOP	1static double Time_F(int s, int usertime)	{	double ret;#ifdef USE_TOD	if(usertime)	    {		static struct rusage tstart,tend;		if (s == START)			{			getrusage(RUSAGE_SELF,&tstart);			return(0);			}		else			{			long i;			getrusage(RUSAGE_SELF,&tend);			i=(long)tend.ru_utime.tv_usec-(long)tstart.ru_utime.tv_usec;			ret=((double)(tend.ru_utime.tv_sec-tstart.ru_utime.tv_sec))			  +((double)i)/1000000.0;			return((ret < 0.001)?0.001:ret);			}		}	else		{		static struct timeval tstart,tend;		long i;		if (s == START)			{			gettimeofday(&tstart,NULL);			return(0);			}		else			{			gettimeofday(&tend,NULL);			i=(long)tend.tv_usec-(long)tstart.tv_usec;			ret=((double)(tend.tv_sec-tstart.tv_sec))+((double)i)/1000000.0;			return((ret < 0.001)?0.001:ret);			}		}#else  /* ndef USE_TOD */		# ifdef TIMES	if (usertime)		{		static struct tms tstart,tend;		if (s == START)			{			times(&tstart);			return(0);			}		else			{			times(&tend);			ret=((double)(tend.tms_utime-tstart.tms_utime))/HZ;			return((ret < 1e-3)?1e-3:ret);			}		}# endif /* times() */# if defined(TIMES) && defined(TIMEB)	else# endif# ifdef TIMEB		{		static struct timeb tstart,tend;		long i;		if (s == START)			{			ftime(&tstart);			return(0);			}		else			{			ftime(&tend);			i=(long)tend.millitm-(long)tstart.millitm;			ret=((double)(tend.time-tstart.time))+((double)i)/1000.0;			return((ret < 0.001)?0.001:ret);			}		}# endif#endif	}int MAIN(int, char **);int MAIN(int argc, char **argv)	{	unsigned char *buf=NULL,*buf2=NULL;	int mret=1;#define ALGOR_NUM	15#define SIZE_NUM	5#define RSA_NUM		4#define DSA_NUM		3	long count,rsa_count;	int i,j,k;	unsigned rsa_num;#ifndef NO_MD2	unsigned char md2[MD2_DIGEST_LENGTH];#endif#ifndef NO_MDC2	unsigned char mdc2[MDC2_DIGEST_LENGTH];#endif#ifndef NO_MD4	unsigned char md4[MD4_DIGEST_LENGTH];#endif#ifndef NO_MD5	unsigned char md5[MD5_DIGEST_LENGTH];	unsigned char hmac[MD5_DIGEST_LENGTH];#endif#ifndef NO_SHA	unsigned char sha[SHA_DIGEST_LENGTH];#endif#ifndef NO_RIPEMD	unsigned char rmd160[RIPEMD160_DIGEST_LENGTH];#endif#ifndef NO_RC4	RC4_KEY rc4_ks;#endif#ifndef NO_RC5	RC5_32_KEY rc5_ks;#endif#ifndef NO_RC2	RC2_KEY rc2_ks;#endif#ifndef NO_IDEA	IDEA_KEY_SCHEDULE idea_ks;#endif#ifndef NO_BF	BF_KEY bf_ks;#endif#ifndef NO_CAST	CAST_KEY cast_ks;#endif	static unsigned char key16[16]=		{0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,		 0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};	unsigned char iv[8];#ifndef NO_DES	des_cblock *buf_as_des_cblock = NULL;	static des_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};	static des_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};	static des_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};	des_key_schedule sch,sch2,sch3;#endif#define	D_MD2		0#define	D_MDC2		1#define	D_MD4		2#define	D_MD5		3#define	D_HMAC		4#define	D_SHA1		5#define D_RMD160	6#define	D_RC4		7#define	D_CBC_DES	8#define	D_EDE3_DES	9#define	D_CBC_IDEA	10#define	D_CBC_RC2	11#define	D_CBC_RC5	12#define	D_CBC_BF	13#define	D_CBC_CAST	14	double d,results[ALGOR_NUM][SIZE_NUM];	static int lengths[SIZE_NUM]={8,64,256,1024,8*1024};	long c[ALGOR_NUM][SIZE_NUM];	static char *names[ALGOR_NUM]={		"md2","mdc2","md4","md5","hmac(md5)","sha1","rmd160","rc4",		"des cbc","des ede3","idea cbc",		"rc2 cbc","rc5-32/12 cbc","blowfish cbc","cast cbc"};#define	R_DSA_512	0#define	R_DSA_1024	1#define	R_DSA_2048	2#define	R_RSA_512	0#define	R_RSA_1024	1#define	R_RSA_2048	2#define	R_RSA_4096	3#ifndef NO_RSA	RSA *rsa_key[RSA_NUM];	long rsa_c[RSA_NUM][2];	double rsa_results[RSA_NUM][2];	static unsigned int rsa_bits[RSA_NUM]={512,1024,2048,4096};	static unsigned char *rsa_data[RSA_NUM]=		{test512,test1024,test2048,test4096};	static int rsa_data_length[RSA_NUM]={		sizeof(test512),sizeof(test1024),		sizeof(test2048),sizeof(test4096)};#endif#ifndef NO_DSA	DSA *dsa_key[DSA_NUM];	long dsa_c[DSA_NUM][2];	double dsa_results[DSA_NUM][2];	static unsigned int dsa_bits[DSA_NUM]={512,1024,2048};#endif	int rsa_doit[RSA_NUM];	int dsa_doit[DSA_NUM];	int doit[ALGOR_NUM];	int pr_header=0;	int usertime=1;#ifndef TIMES	usertime=-1;#endif	apps_startup();	memset(results, 0, sizeof(results));#ifndef NO_DSA	memset(dsa_key,0,sizeof(dsa_key));#endif	if (bio_err == NULL)		if ((bio_err=BIO_new(BIO_s_file())) != NULL)			BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT);#ifndef NO_RSA	memset(rsa_key,0,sizeof(rsa_key));	for (i=0; i<RSA_NUM; i++)		rsa_key[i]=NULL;#endif	if ((buf=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL)		{		BIO_printf(bio_err,"out of memory\n");		goto end;		}#ifndef NO_DES	buf_as_des_cblock = (des_cblock *)buf;#endif	if ((buf2=(unsigned char *)OPENSSL_malloc((int)BUFSIZE)) == NULL)		{		BIO_printf(bio_err,"out of memory\n");		goto end;		}	memset(c,0,sizeof(c));	memset(iv,0,sizeof(iv));	for (i=0; i<ALGOR_NUM; i++)		doit[i]=0;	for (i=0; i<RSA_NUM; i++)		rsa_doit[i]=0;	for (i=0; i<DSA_NUM; i++)		dsa_doit[i]=0;		j=0;	argc--;	argv++;	while (argc)		{		if	((argc > 0) && (strcmp(*argv,"-elapsed") == 0))			usertime = 0;#ifndef NO_MD2		if	(strcmp(*argv,"md2") == 0) doit[D_MD2]=1;		else#endif

⌨️ 快捷键说明

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