home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / ODR.ARJ / ODR.C next >
C/C++ Source or Header  |  1996-06-14  |  1KB  |  52 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. typedef unsigned char BYTE;
  5. typedef unsigned int  WORD;
  6. typedef unsigned long DWORD;
  7.  
  8.  
  9. WORD GenKey( BYTE *Buf )
  10. {
  11.     WORD nLen, Sum, Flag, i;
  12.  
  13.     i = 0;
  14.     Sum = 0;
  15.     while( Buf[ i ] ){
  16.         Sum += Buf[ i ] * ( ( i & 0x7 ) + 1 );
  17.         i ++;
  18.     }
  19.  
  20.     Flag = 0;
  21.     Flag |= ( Sum & 0x0001 ) << 0xf;
  22.     Flag |= ( Sum & 0x0002 ) << 0xd;
  23.     Flag |= ( Sum & 0x0004 ) << 0xb;
  24.     Flag |= ( Sum & 0x0008 );
  25.     Flag |= ( Sum & 0x0010 ) >> 0x2;
  26.     Flag |= ( Sum & 0x0020 ) << 0x3;
  27.     Flag |= ( Sum & 0x0040 ) >> 0x1;
  28.     Flag |= ( Sum & 0x0080 ) << 0x4;
  29.     Flag |= ( Sum & 0x0100 ) >> 0x8;
  30.     Flag |= ( Sum & 0x0200 ) << 0x3;
  31.     Flag |= ( Sum & 0x0400 ) >> 0x9;
  32.     Flag |= ( Sum & 0x0800 ) >> 0x2;
  33.     Flag |= ( Sum & 0x1000 ) >> 0x5;
  34.     Flag |= ( Sum & 0x2000 ) >> 0x9;
  35.     Flag |= ( Sum & 0x4000 ) >> 0x8;
  36.     Flag |= ( Sum & 0x8000 ) >> 0x5;
  37.  
  38.     return Flag;
  39. }
  40.  
  41. void main( void )
  42. {
  43.     BYTE    bName[ 128 ], i;
  44.  
  45.     printf( "ODR --- OpenDoor Register\n" );
  46.  
  47.     printf( "Enter you Name: " );
  48.     gets( bName );
  49.  
  50.     printf( "Your Register Key is: %04X.\n", GenKey( bName ) );
  51. }
  52.