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

  1. /* Investigate cycles in DES output feedback mode (experimental)
  2.  * Phil Karn
  3.  */
  4. #include <stdio.h>
  5. main()
  6. {
  7.     char key[8],start[8],work[8];
  8.     long update;
  9.     register int i;
  10.     long iter;
  11.     char ks[16][8];
  12.  
  13.     desinit(0);
  14.     printf("Enter key: ");
  15.     get8(key);
  16.     printf("Setting key: "); put8(key); printf("\n");
  17.     setkey(ks,key);
  18.     printf("Enter starting value: ");
  19.     get8(start);
  20.     printf("Starting value: "); put8(start); printf("\n");
  21.     printf("Update interval: ");
  22.     scanf("%ld",&update);
  23.  
  24.     memcpy(work,start,8);
  25.  
  26.     for(iter = 0;; iter++){
  27.  
  28.         endes(ks,work);
  29.         if((iter % update) == 0){
  30.             printf("%ld ",iter);
  31.             put8(work); printf("\n");
  32.         }
  33.         if(memcmp(work,start,8) == 0){
  34.             printf("CYCLE FOUND after %ld iterations\n",iter);
  35.             exit(0);
  36.         }
  37.     }
  38. }
  39. get8(cp)
  40. char *cp;
  41. {
  42.     int i,t;
  43.  
  44.     for(i=0;i<8;i++){
  45.         scanf("%2x",&t);
  46.         *cp++ = t;
  47.     }
  48. }
  49. put8(cp)
  50. char *cp;
  51. {
  52.     int i;
  53.  
  54.     for(i=0;i<8;i++){
  55.         printf("%2x ",*cp++ & 0xff);
  56.     }
  57. }
  58.