home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / c / snippets / regit.c < prev    next >
C/C++ Source or Header  |  1995-03-13  |  2KB  |  59 lines

  1. /*************************************************************************
  2.  
  3.    REGIT.C - A very simple registration key generator. Uses simple XOR
  4.    manipulations of a string to create a key.
  5.  
  6.    It is NOT foolproof, but it will work.
  7.  
  8.    Donated to the Public Domain by Craig Morrison 12 May 1994, use,
  9.    abuse, fold, spindle or mutilate anyway you see fit.
  10.  
  11. *************************************************************************/
  12.  
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. #include <string.h>
  16. #include <ctype.h>
  17.  
  18. /* Choose your own values for these */
  19.  
  20. #define XOR_PRIME      0xFFFFFFFF
  21. #define XOR_CRYPT      0x13579ACE
  22. #define XOR_POST_CRYPT 0x2468BDF0
  23.  
  24. /*************************************************************************
  25.  
  26.     REGIT accepts one argument on the command line; The string you want
  27.     to use to generate a key from. It outputs the generated key in both
  28.     decimal and hexidecimal form. Spaces in the argument should have the
  29.     '_' character used in their place, they get translated below.
  30.  
  31. *************************************************************************/
  32.  
  33. int main(int argc, char *argv[])
  34. {
  35.       long keyval = XOR_PRIME;
  36.       long key;
  37.       char *p;
  38.       char buf[128];
  39.  
  40.       if (argc>1)
  41.       {
  42.             strcpy(buf, argv[1]);
  43.             p = buf;
  44.             while(*p)
  45.             {
  46.                   if (*p=='_')
  47.                         *p = ' ';
  48.  
  49.                   key = (long) toupper(*p);
  50.                   key ^= XOR_CRYPT;
  51.                   keyval ^= key;
  52.                   p++;
  53.             }
  54.             keyval ^= XOR_POST_CRYPT;
  55.             printf("Key value = %08X hex, %u decimal.\n", keyval, keyval);
  56.       }
  57.       return 0;
  58. }
  59.