home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / des3_os2.zip / BENCH.C next >
C/C++ Source or Header  |  1996-02-20  |  2KB  |  77 lines

  1. /*
  2.  * this sample source will give you several benchmark results. -SW
  3.  */
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <fcntl.h>
  8. #include <time.h>
  9. #include "des3.h"
  10.  
  11. #define BUFSIZE 4096
  12. #define ROUNDS  4096
  13.  
  14. static char Usage[] = "bench [-]{d|e}[1|3]";
  15.  
  16. int main(int argc, char **argv)
  17. {
  18.   register unsigned char *b, *buf, c;
  19.   register int i, j ,mode, what;
  20.   register time_t t, t1;
  21.  
  22.   if(argc == 2) {
  23.     switch (c = *argv[1] == '-' ? *++argv[1] : *argv[1]) {
  24.       case 'e': case 'E': what = 0; break;
  25.       case 'd': case 'D': what = 1; break;
  26.       default : fprintf(stderr,"bench : illegal option %c \n",c);
  27.               fprintf(stderr,"Usage : %s \n",Usage);
  28.               return 1;
  29.     }
  30.     switch(*++argv[1]) {
  31.       case '1': mode = 1; break;
  32.       case '3': mode = 3; break;
  33.       default : mode = 1;
  34.     }
  35.   } else {
  36.     fprintf(stderr,"Usage : %s \n",Usage);
  37.     return 1;
  38.   }
  39.   if ((buf = (unsigned char *) malloc(BUFSIZE)) == NULL) {
  40.     fprintf(stderr,"Error: Cannot alloc memory !\n");
  41.     return 1;
  42.   }
  43.   if (mode == 1) {    /* single DES */
  44.     if (what == 0) {   /* encrypt */
  45.       t = time(NULL);
  46.       for (j = 0; j < ROUNDS; j++)
  47.       for (b=buf, i = BUFSIZE; i > 0; i -=8 , b += 8) ecbencode(b,b);
  48.       t1 = time(NULL) - t;
  49.       printf("%ld seconds for encrypting 16 MB of memory using single DES\n", t1);
  50.       return 0;
  51.     } else {   /* decrypt */
  52.       t = time(NULL);
  53.       for (j = 0; j < ROUNDS; j++)
  54.       for (b=buf, i = BUFSIZE; i > 0; i -=8 , b += 8) ecbdecode(b,b);
  55.       t1 = time(NULL) - t;
  56.       printf("%ld seconds for decrypting 16 MB of memory using single DES\n", t1);
  57.       return 0;
  58.     }
  59.   } else {  /* triple DES */
  60.     if (what == 0) {   /* encrypt */
  61.       t = time(NULL);
  62.       for (j = 0; j < ROUNDS; j++)
  63.       for (b=buf, i = BUFSIZE; i > 0; i -=8 , b += 8) ecb3encode(b,b);
  64.       t1 = time(NULL) - t;
  65.       printf("%ld seconds for encrypting 16 MB of memory using triple DES\n", t1);
  66.       return 0;
  67.     } else {   /* decrypt */
  68.       t = time(NULL);
  69.       for (j = 0; j < ROUNDS; j++)
  70.       for (b=buf, i = BUFSIZE; i > 0; i -=8 , b += 8) ecb3decode(b,b);
  71.       t1 = time(NULL) - t;
  72.       printf("%ld seconds for decrypting 16 MB of memory using triple DES\n", t1);
  73.       return 0;
  74.     }
  75.   }
  76. }
  77.