d3des.h
上传用户:qd_success
上传日期:2013-04-09
资源大小:8k
文件大小:4k
源码类别:

加密解密

开发平台:

C++ Builder

  1. /* d3des.h -
  2.  *
  3.  * Headers and defines for d3des.c
  4.  * Graven Imagery, 1992.
  5.  *
  6.  * Copyright (c) 1988,1989,1990,1991,1992 by Richard Outerbridge
  7.  * (GEnie : OUTER; CIS : [71755,204])
  8.  */
  9. #define D2_DES /* include double-length support */
  10. #define D3_DES /* include triple-length support */
  11. #ifdef D3_DES
  12. #ifndef D2_DES
  13. #define D2_DES /* D2_DES is needed for D3_DES */
  14. #endif
  15. #endif
  16. #define EN0 0 /* MODE == encrypt */
  17. #define DE1 1 /* MODE == decrypt */
  18. /* A useful alias on 68000-ish machines, but NOT USED HERE. */
  19. typedef union {
  20. unsigned long blok[2];
  21. unsigned short word[4];
  22. unsigned char byte[8];
  23. } M68K;
  24. extern void deskey(unsigned char *, short);
  25. /*       hexkey[8]     MODE
  26.  * Sets the internal key register according to the hexadecimal
  27.  * key contained in the 8 bytes of hexkey, according to the DES,
  28.  * for encryption or decryption according to MODE.
  29.  */
  30. extern void usekey(unsigned long *);
  31. /*     cookedkey[32]
  32.  * Loads the internal key register with the data in cookedkey.
  33.  */
  34. extern void cpkey(unsigned long *);
  35. /*    cookedkey[32]
  36.  * Copies the contents of the internal key register into the storage
  37.  * located at &cookedkey[0].
  38.  */
  39. extern void des(unsigned char *, unsigned char *);
  40. /*     from[8]       to[8]
  41.  * Encrypts/Decrypts (according to the key currently loaded in the
  42.  * internal key register) one block of eight bytes at address 'from'
  43.  * into the block at address 'to'.  They can be the same.
  44.  */
  45. #ifdef D2_DES
  46. #define desDkey(a,b) des2key((a),(b))
  47. extern void des2key(unsigned char *, short);
  48. /*       hexkey[16]     MODE
  49.  * Sets the internal key registerS according to the hexadecimal
  50.  * keyS contained in the 16 bytes of hexkey, according to the DES,
  51.  * for DOUBLE encryption or decryption according to MODE.
  52.  * NOTE: this clobbers all three key registers!
  53.  */
  54. extern void Ddes(unsigned char *, unsigned char *);
  55. /*     from[8]       to[8]
  56.  * Encrypts/Decrypts (according to the keyS currently loaded in the
  57.  * internal key registerS) one block of eight bytes at address 'from'
  58.  * into the block at address 'to'.  They can be the same.
  59.  */
  60. extern void D2des(unsigned char *, unsigned char *);
  61. /*     from[16]       to[16]
  62.  * Encrypts/Decrypts (according to the keyS currently loaded in the
  63.  * internal key registerS) one block of SIXTEEN bytes at address 'from'
  64.  * into the block at address 'to'.  They can be the same.
  65.  */
  66. extern void makekey(char *, unsigned char *);
  67. /* *password, single-length key[8]
  68.  * With a double-length default key, this routine hashes a NULL-terminated
  69.  * string into an eight-byte random-looking key, suitable for use with the
  70.  * deskey() routine.
  71.  */
  72. #define makeDkey(a,b) make2key((a),(b))
  73. extern void make2key(char *, unsigned char *);
  74. /* *password, double-length key[16]
  75.  * With a double-length default key, this routine hashes a NULL-terminated
  76.  * string into a sixteen-byte random-looking key, suitable for use with the
  77.  * des2key() routine.
  78.  */
  79. #ifndef D3_DES /* D2_DES only */
  80. #define useDkey(a) use2key((a))
  81. #define cpDkey(a) cp2key((a))
  82. extern void use2key(unsigned long *);
  83. /*     cookedkey[64]
  84.  * Loads the internal key registerS with the data in cookedkey.
  85.  * NOTE: this clobbers all three key registers!
  86.  */
  87. extern void cp2key(unsigned long *);
  88. /*    cookedkey[64]
  89.  * Copies the contents of the internal key registerS into the storage
  90.  * located at &cookedkey[0].
  91.  */
  92. #else /* D3_DES too */
  93. #define useDkey(a) use3key((a))
  94. #define cpDkey(a) cp3key((a))
  95. extern void des3key(unsigned char *, short);
  96. /*       hexkey[24]     MODE
  97.  * Sets the internal key registerS according to the hexadecimal
  98.  * keyS contained in the 24 bytes of hexkey, according to the DES,
  99.  * for DOUBLE encryption or decryption according to MODE.
  100.  */
  101. extern void use3key(unsigned long *);
  102. /*     cookedkey[96]
  103.  * Loads the 3 internal key registerS with the data in cookedkey.
  104.  */
  105. extern void cp3key(unsigned long *);
  106. /*    cookedkey[96]
  107.  * Copies the contents of the 3 internal key registerS into the storage
  108.  * located at &cookedkey[0].
  109.  */
  110. extern void make3key(char *, unsigned char *);
  111. /* *password, triple-length key[24]
  112.  * With a triple-length default key, this routine hashes a NULL-terminated
  113.  * string into a twenty-four-byte random-looking key, suitable for use with
  114.  * the des3key() routine.
  115.  */
  116. #endif /* D3_DES */
  117. #endif /* D2_DES */
  118. /* d3des.h V5.09 rwo 9208.04 15:06 Graven Imagery
  119.  ********************************************************************/