home *** CD-ROM | disk | FTP | other *** search
/ Boldly Go Collection / version40.iso / TS / 17A / DES_1991.ZIP / KGEN.C < prev    next >
C/C++ Source or Header  |  1991-06-21  |  1KB  |  51 lines

  1. /* Crypto stream generator
  2.  * Reads 16 bytes from stdin. The first 8 are the DES key, the second 8
  3.  * are the initialization vector. The IV is
  4.  * fed to DES in the encrypt mode (no IP, IP-1). The ciphertext
  5.  * is then written to stdout, most significant byte first. The IV
  6.  * register is then incremented by one and the process is repeated,
  7.  * ad infinitum.
  8.  */
  9. #include <stdio.h>
  10. main(argc,argv)
  11. int argc;
  12. char *argv[];
  13. {
  14.     char ks[16][8];    /* Key schedule */
  15.     char iv[8];    /* Initial vector */
  16.     char out[8];    /* Output buffer */
  17.     int i,j;
  18.     
  19.  
  20.     desinit(1);
  21.     fread(iv,1,8,stdin);
  22.     setkey(ks,iv);
  23.     fread(iv,1,8,stdin);
  24.     while(1){
  25.         memcpy(out,iv,8);
  26.         endes(ks,out);
  27.         for(i=0;i<8;i++)
  28.             putc(out[i],stdout);
  29.         /* Increment register */
  30.         iv[7]++;
  31.         for(i=7;i != 0;i--){
  32.             if(iv[i] == 0)
  33.                 iv[i-1]++;    /* Propagate carry */
  34.         }
  35.     }
  36. }
  37. int
  38. htoi(c)
  39. char c;
  40. {
  41.     if(c >= '0' && c <= '9')
  42.         return c - '0';
  43.     if(c >= 'a' && c <= 'f')
  44.         return c - 'a' + 10;
  45.     if(c >= 'A' && c <= 'F')
  46.         return c - 'A' + 10;
  47.     return -1;
  48. }
  49.  
  50.  
  51.