📄 speed.c
字号:
#endif#ifndef OPENSSL_NO_MD4 BIO_printf(bio_err,"md4 ");#endif#ifndef OPENSSL_NO_MD5 BIO_printf(bio_err,"md5 ");#ifndef OPENSSL_NO_HMAC BIO_printf(bio_err,"hmac ");#endif#endif#ifndef OPENSSL_NO_SHA1 BIO_printf(bio_err,"sha1 ");#endif#ifndef OPENSSL_NO_SHA256 BIO_printf(bio_err,"sha256 ");#endif#ifndef OPENSSL_NO_SHA512 BIO_printf(bio_err,"sha512 ");#endif#ifndef OPENSSL_NO_RIPEMD160 BIO_printf(bio_err,"rmd160");#endif#if !defined(OPENSSL_NO_MD2) || !defined(OPENSSL_NO_MDC2) || \ !defined(OPENSSL_NO_MD4) || !defined(OPENSSL_NO_MD5) || \ !defined(OPENSSL_NO_SHA1) || !defined(OPENSSL_NO_RIPEMD160) BIO_printf(bio_err,"\n");#endif#ifndef OPENSSL_NO_IDEA BIO_printf(bio_err,"idea-cbc ");#endif#ifndef OPENSSL_NO_RC2 BIO_printf(bio_err,"rc2-cbc ");#endif#ifndef OPENSSL_NO_RC5 BIO_printf(bio_err,"rc5-cbc ");#endif#ifndef OPENSSL_NO_BF BIO_printf(bio_err,"bf-cbc");#endif#if !defined(OPENSSL_NO_IDEA) || !defined(OPENSSL_NO_RC2) || \ !defined(OPENSSL_NO_BF) || !defined(OPENSSL_NO_RC5) BIO_printf(bio_err,"\n");#endif#ifndef OPENSSL_NO_DES BIO_printf(bio_err,"des-cbc des-ede3 ");#endif#ifndef OPENSSL_NO_AES BIO_printf(bio_err,"aes-128-cbc aes-192-cbc aes-256-cbc ");#endif#ifndef OPENSSL_NO_RC4 BIO_printf(bio_err,"rc4");#endif BIO_printf(bio_err,"\n");#ifndef OPENSSL_NO_RSA BIO_printf(bio_err,"rsa512 rsa1024 rsa2048 rsa4096\n");#endif#ifndef OPENSSL_NO_DSA BIO_printf(bio_err,"dsa512 dsa1024 dsa2048\n");#endif#ifndef OPENSSL_NO_ECDSA BIO_printf(bio_err,"ecdsap160 ecdsap192 ecdsap224 ecdsap256 ecdsap384 ecdsap521\n"); BIO_printf(bio_err,"ecdsak163 ecdsak233 ecdsak283 ecdsak409 ecdsak571\n"); BIO_printf(bio_err,"ecdsab163 ecdsab233 ecdsab283 ecdsab409 ecdsab571\n"); BIO_printf(bio_err,"ecdsa\n");#endif#ifndef OPENSSL_NO_ECDH BIO_printf(bio_err,"ecdhp160 ecdhp192 ecdhp224 ecdhp256 ecdhp384 ecdhp521\n"); BIO_printf(bio_err,"ecdhk163 ecdhk233 ecdhk283 ecdhk409 ecdhk571\n"); BIO_printf(bio_err,"ecdhb163 ecdhb233 ecdhb283 ecdhb409 ecdhb571\n"); BIO_printf(bio_err,"ecdh\n");#endif#ifndef OPENSSL_NO_IDEA BIO_printf(bio_err,"idea ");#endif#ifndef OPENSSL_NO_RC2 BIO_printf(bio_err,"rc2 ");#endif#ifndef OPENSSL_NO_DES BIO_printf(bio_err,"des ");#endif#ifndef OPENSSL_NO_AES BIO_printf(bio_err,"aes ");#endif#ifndef OPENSSL_NO_RSA BIO_printf(bio_err,"rsa ");#endif#ifndef OPENSSL_NO_BF BIO_printf(bio_err,"blowfish");#endif#if !defined(OPENSSL_NO_IDEA) || !defined(OPENSSL_NO_RC2) || \ !defined(OPENSSL_NO_DES) || !defined(OPENSSL_NO_RSA) || \ !defined(OPENSSL_NO_BF) || !defined(OPENSSL_NO_AES) BIO_printf(bio_err,"\n");#endif BIO_printf(bio_err,"\n"); BIO_printf(bio_err,"Available options:\n");#if defined(TIMES) || defined(USE_TOD) BIO_printf(bio_err,"-elapsed measure time in real time instead of CPU user time.\n");#endif#ifndef OPENSSL_NO_ENGINE BIO_printf(bio_err,"-engine e use engine e, possibly a hardware device.\n");#endif BIO_printf(bio_err,"-evp e use EVP e.\n"); BIO_printf(bio_err,"-decrypt time decryption instead of encryption (only EVP).\n"); BIO_printf(bio_err,"-mr produce machine readable output.\n");#ifdef HAVE_FORK BIO_printf(bio_err,"-multi n run n benchmarks in parallel.\n");#endif goto end; } argc--; argv++; j++; }#ifdef HAVE_FORK if(multi && do_multi(multi)) goto show_res;#endif if (j == 0) { for (i=0; i<ALGOR_NUM; i++) { if (i != D_EVP) doit[i]=1; } for (i=0; i<RSA_NUM; i++) rsa_doit[i]=1; for (i=0; i<DSA_NUM; i++) dsa_doit[i]=1; } for (i=0; i<ALGOR_NUM; i++) if (doit[i]) pr_header++; if (usertime == 0 && !mr) BIO_printf(bio_err,"You have chosen to measure elapsed time instead of user CPU time.\n"); if (usertime <= 0 && !mr) { BIO_printf(bio_err,"To get the most accurate results, try to run this\n"); BIO_printf(bio_err,"program when this computer is idle.\n"); }#ifndef OPENSSL_NO_RSA for (i=0; i<RSA_NUM; i++) { const unsigned char *p; p=rsa_data[i]; rsa_key[i]=d2i_RSAPrivateKey(NULL,&p,rsa_data_length[i]); if (rsa_key[i] == NULL) { BIO_printf(bio_err,"internal error loading RSA key number %d\n",i); goto end; }#if 0 else { BIO_printf(bio_err,mr ? "+RK:%d:" : "Loaded RSA key, %d bit modulus and e= 0x", BN_num_bits(rsa_key[i]->n)); BN_print(bio_err,rsa_key[i]->e); BIO_printf(bio_err,"\n"); }#endif }#endif#ifndef OPENSSL_NO_DSA dsa_key[0]=get_dsa512(); dsa_key[1]=get_dsa1024(); dsa_key[2]=get_dsa2048();#endif#ifndef OPENSSL_NO_DES DES_set_key_unchecked(&key,&sch); DES_set_key_unchecked(&key2,&sch2); DES_set_key_unchecked(&key3,&sch3);#endif#ifndef OPENSSL_NO_AES AES_set_encrypt_key(key16,128,&aes_ks1); AES_set_encrypt_key(key24,192,&aes_ks2); AES_set_encrypt_key(key32,256,&aes_ks3);#endif#ifndef OPENSSL_NO_IDEA idea_set_encrypt_key(key16,&idea_ks);#endif#ifndef OPENSSL_NO_RC4 RC4_set_key(&rc4_ks,16,key16);#endif#ifndef OPENSSL_NO_RC2 RC2_set_key(&rc2_ks,16,key16,128);#endif#ifndef OPENSSL_NO_RC5 RC5_32_set_key(&rc5_ks,16,key16,12);#endif#ifndef OPENSSL_NO_BF BF_set_key(&bf_ks,16,key16);#endif#ifndef OPENSSL_NO_CAST CAST_set_key(&cast_ks,16,key16);#endif#ifndef OPENSSL_NO_RSA memset(rsa_c,0,sizeof(rsa_c));#endif#ifndef SIGALRM#ifndef OPENSSL_NO_DES BIO_printf(bio_err,"First we calculate the approximate speed ...\n"); count=10; do { long it; count*=2; Time_F(START); for (it=count; it; it--) DES_ecb_encrypt(buf_as_des_cblock,buf_as_des_cblock, &sch,DES_ENCRYPT); d=Time_F(STOP); } while (d <3); save_count=count; c[D_MD2][0]=count/10; c[D_MDC2][0]=count/10; c[D_MD4][0]=count; c[D_MD5][0]=count; c[D_HMAC][0]=count; c[D_SHA1][0]=count; c[D_RMD160][0]=count; c[D_RC4][0]=count*5; c[D_CBC_DES][0]=count; c[D_EDE3_DES][0]=count/3; c[D_CBC_IDEA][0]=count; c[D_CBC_RC2][0]=count; c[D_CBC_RC5][0]=count; c[D_CBC_BF][0]=count; c[D_CBC_CAST][0]=count; c[D_CBC_128_AES][0]=count; c[D_CBC_192_AES][0]=count; c[D_CBC_256_AES][0]=count; c[D_SHA256][0]=count; c[D_SHA512][0]=count; for (i=1; i<SIZE_NUM; i++) { c[D_MD2][i]=c[D_MD2][0]*4*lengths[0]/lengths[i]; c[D_MDC2][i]=c[D_MDC2][0]*4*lengths[0]/lengths[i]; c[D_MD4][i]=c[D_MD4][0]*4*lengths[0]/lengths[i]; c[D_MD5][i]=c[D_MD5][0]*4*lengths[0]/lengths[i]; c[D_HMAC][i]=c[D_HMAC][0]*4*lengths[0]/lengths[i]; c[D_SHA1][i]=c[D_SHA1][0]*4*lengths[0]/lengths[i]; c[D_RMD160][i]=c[D_RMD160][0]*4*lengths[0]/lengths[i]; c[D_SHA256][i]=c[D_SHA256][0]*4*lengths[0]/lengths[i]; c[D_SHA512][i]=c[D_SHA512][0]*4*lengths[0]/lengths[i]; } for (i=1; i<SIZE_NUM; i++) { long l0,l1; l0=(long)lengths[i-1]; l1=(long)lengths[i]; c[D_RC4][i]=c[D_RC4][i-1]*l0/l1; c[D_CBC_DES][i]=c[D_CBC_DES][i-1]*l0/l1; c[D_EDE3_DES][i]=c[D_EDE3_DES][i-1]*l0/l1; c[D_CBC_IDEA][i]=c[D_CBC_IDEA][i-1]*l0/l1; c[D_CBC_RC2][i]=c[D_CBC_RC2][i-1]*l0/l1; c[D_CBC_RC5][i]=c[D_CBC_RC5][i-1]*l0/l1; c[D_CBC_BF][i]=c[D_CBC_BF][i-1]*l0/l1; c[D_CBC_CAST][i]=c[D_CBC_CAST][i-1]*l0/l1; c[D_CBC_128_AES][i]=c[D_CBC_128_AES][i-1]*l0/l1; c[D_CBC_192_AES][i]=c[D_CBC_192_AES][i-1]*l0/l1; c[D_CBC_256_AES][i]=c[D_CBC_256_AES][i-1]*l0/l1; }#ifndef OPENSSL_NO_RSA rsa_c[R_RSA_512][0]=count/2000; rsa_c[R_RSA_512][1]=count/400; for (i=1; i<RSA_NUM; i++) { rsa_c[i][0]=rsa_c[i-1][0]/8; rsa_c[i][1]=rsa_c[i-1][1]/4; if ((rsa_doit[i] <= 1) && (rsa_c[i][0] == 0)) rsa_doit[i]=0; else { if (rsa_c[i][0] == 0) { rsa_c[i][0]=1; rsa_c[i][1]=20; } } }#endif#ifndef OPENSSL_NO_DSA dsa_c[R_DSA_512][0]=count/1000; dsa_c[R_DSA_512][1]=count/1000/2; for (i=1; i<DSA_NUM; i++) { dsa_c[i][0]=dsa_c[i-1][0]/4; dsa_c[i][1]=dsa_c[i-1][1]/4; if ((dsa_doit[i] <= 1) && (dsa_c[i][0] == 0)) dsa_doit[i]=0; else { if (dsa_c[i] == 0) { dsa_c[i][0]=1; dsa_c[i][1]=1; } } }#endif#ifndef OPENSSL_NO_ECDSA ecdsa_c[R_EC_P160][0]=count/1000; ecdsa_c[R_EC_P160][1]=count/1000/2; for (i=R_EC_P192; i<=R_EC_P521; i++) { ecdsa_c[i][0]=ecdsa_c[i-1][0]/2; ecdsa_c[i][1]=ecdsa_c[i-1][1]/2; if ((ecdsa_doit[i] <= 1) && (ecdsa_c[i][0] == 0)) ecdsa_doit[i]=0; else { if (ecdsa_c[i] == 0) { ecdsa_c[i][0]=1; ecdsa_c[i][1]=1; } } } ecdsa_c[R_EC_K163][0]=count/1000; ecdsa_c[R_EC_K163][1]=count/1000/2; for (i=R_EC_K233; i<=R_EC_K571; i++) { ecdsa_c[i][0]=ecdsa_c[i-1][0]/2; ecdsa_c[i][1]=ecdsa_c[i-1][1]/2; if ((ecdsa_doit[i] <= 1) && (ecdsa_c[i][0] == 0)) ecdsa_doit[i]=0; else { if (ecdsa_c[i] == 0) { ecdsa_c[i][0]=1; ecdsa_c[i][1]=1; } } } ecdsa_c[R_EC_B163][0]=count/1000; ecdsa_c[R_EC_B163][1]=count/1000/2; for (i=R_EC_B233; i<=R_EC_B571; i++) { ecdsa_c[i][0]=ecdsa_c[i-1][0]/2; ecdsa_c[i][1]=ecdsa_c[i-1][1]/2; if ((ecdsa_doit[i] <= 1) && (ecdsa_c[i][0] == 0)) ecdsa_doit[i]=0; else { if (ecdsa_c[i] == 0) { ecdsa_c[i][0]=1; ecdsa_c[i][1]=1; } } }#endif#ifndef OPENSSL_NO_ECDH ecdh_c[R_EC_P160][0]=count/1000; ecdh_c[R_EC_P160][1]=count/1000; for (i=R_EC_P192; i<=R_EC_P521; i++) { ecdh_c[i][0]=ecdh_c[i-1][0]/2; ecdh_c[i][1]=ecdh_c[i-1][1]/2; if ((ecdh_doit[i] <= 1) && (ecdh_c[i][0] == 0)) ecdh_doit[i]=0; else { if (ecdh_c[i] == 0) { ecdh_c[i][0]=1; ecdh_c[i][1]=1; } } } ecdh_c[R_EC_K163][0]=count/1000; ecdh_c[R_EC_K163][1]=count/1000; for (i=R_EC_K233; i<=R_EC_K571; i++) { ecdh_c[i][0]=ecdh_c[i-1][0]/2; ecdh_c[i][1]=ecdh_c[i-1][1]/2; if ((ecdh_doit[i] <= 1) && (ecdh_c[i][0] == 0)) ecdh_doit[i]=0; else { if (ecdh_c[i] == 0) { ecdh_c[i][0]=1; ecdh_c[i][1]=1; } } } ecdh_c[R_EC_B163][0]=count/1000; ecdh_c[R_EC_B163][1]=count/1000; for (i=R_EC_B233; i<=R_EC_B571; i++) { ecdh_c[i][0]=ecdh_c[i-1][0]/2; ecdh_c[i][1]=ecdh_c[i-1][1]/2; if ((ecdh_doit[i] <= 1) && (ecdh_c[i][0] == 0)) ecdh_doit[i]=0; else { if (ecdh_c[i] == 0) { ecdh_c[i][0]=1; ecdh_c[i][1]=1; } } }#endif#define COND(d) (count < (d))#define COUNT(d) (d)#else/* not worth fixing */# error "You cannot disable DES on systems without SIGALRM."#endif /* OPENSSL_NO_DES */#else#define COND(c) (run)#define COUNT(d) (count) signal(SIGALRM,sig_done);#endif /* SIGALRM */#ifndef OPENSSL_NO_MD2 if (doit[D_MD2]) { for (j=0; j<SIZE_NUM; j++) { print_message(names[D_MD2],c[D_MD2][j],lengths[j]); Time_F(START); for (count=0,run=1; COND(c[D_MD2][j]); count++) EVP_Digest(buf,(unsigned long)lengths[j],&(md2[0]),NULL,EVP_md2(),NULL); d=Time_F(STOP); print_result(D_MD2,j,count,d); } }#endif#ifndef OPENSSL_NO_MDC2 if (doit[D_MDC2]) { for (j=0; j<SIZE_NUM; j++) { print_message(names[D_MDC2],c[D_MDC2][j],lengths[j]); Time_F(START); for (count=0,run=1; COND(c[D_MDC2][j]); count++) EVP_Digest(buf,(unsigned long)lengths[j],&(mdc2[0]),NULL,EVP_mdc2(),NULL); d=Time_F(STOP); print_result(D_MDC2,j,count,d); } }#endif#ifndef OPENSSL_NO_MD4 if (doit[D_MD4]) { for (j=0; j<SIZE_NUM; j++) { print_message(names[D_MD4],c[D_MD4][j],lengths[j]); Time_F(START); for (count=0,run=1; COND(c[D_MD4][j]); count++) EVP_Digest(&(buf[0]),(unsigned long)lengths[j],&(md4[0]),NULL,EVP_md4(),NULL); d=Time_F(STOP); print_result(D_MD4,j,count,d); } }#endif#ifndef OPENSSL_NO_MD5 if (doit[D_MD5]) { for (j=0; j<SIZE_NUM; j++) { print_message(names[D_MD5],c[D_MD5][j],lengths[j]); Time_F(START); for (count=0,run=1; COND(c[D_MD5][j]); count++) EVP_Digest(&(buf[0]),(unsigned long)lengths[j],&(md5[0]),NULL,EVP_get_digestbyname("md5"),NULL); d=Time_F(STOP); print_result(D_MD5,j,count,d); } }#endif#if !defined(OPENSSL_NO_MD5) && !defined(OPENSSL_NO_HMAC) if (doit[D_HMAC]) { HMAC_CTX hctx; HMAC_CTX_init(&hctx); HMAC_Init_ex(&hctx,(unsigned char *)"This is a key...", 16,EVP_md5(), NULL); for (j=0; j<SIZE_NUM; j++) { print_message(names[D_HMAC],c[D_HMAC][j],lengths[j]); Time_F(START); for (count=0,run=1; COND(c[D_HMAC][j]); count++) { HMAC_Init_ex(&hctx,NULL,0,NULL,NULL); HMAC_Update(&hctx,buf,lengths[j]); HMAC_Final(&hctx,&(hmac[0]),NULL); } d=Time_F(STOP); print_result(D_HMAC,j,count,d); } HMAC_CTX_cleanup(&hctx); }#endif#ifndef OPENSSL_NO_SHA if (doit[D_SHA1]) { for (j=0; j<SIZE_NUM; j++) { print_message(names[D_SHA1],c[D_SHA1][j],lengths[j]); Time_F(START); for (count=0,run=1; COND(c[D_SHA1][j]); count++) EVP_Digest(buf,(unsigned long)lengths[j],&(sha[0]),NULL,EVP_sha1(),NULL); d=Time_F(STOP); print_result(D_SHA1,j,count,d); } }#ifndef OPENSSL_NO_SHA256 if (doit[D_SHA256]) { for (j=0; j<SIZE_NUM; j++) { print_message(names[D_SHA256],c[D_SHA256][j],lengths[j]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -