safer.h.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:5k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. /*******************************************************************************
  2. *
  3. * FILE:           safer.h
  4. *
  5. * DESCRIPTION:    block-cipher algorithm SAFER (Secure And Fast Encryption
  6. *                 Routine) in its four versions: SAFER K-64, SAFER K-128,
  7. *                 SAFER SK-64 and SAFER SK-128.
  8. *
  9. * AUTHOR:         Richard De Moliner (demoliner@isi.ee.ethz.ch)
  10. *                 Signal and Information Processing Laboratory
  11. *                 Swiss Federal Institute of Technology
  12. *                 CH-8092 Zuerich, Switzerland
  13. *
  14. * DATE:           September 9, 1995
  15. *
  16. * CHANGE HISTORY:
  17. *
  18. *******************************************************************************/
  19. #ifndef SAFER_H
  20. #define SAFER_H
  21. #include "../typedefs.h"
  22. /******************* External Headers *****************************************/
  23. /******************* Local Headers ********************************************/
  24. /******************* Constants ************************************************/
  25. #define SAFER_K64_DEFAULT_NOF_ROUNDS     6
  26. #define SAFER_K128_DEFAULT_NOF_ROUNDS   10
  27. #define SAFER_SK64_DEFAULT_NOF_ROUNDS    8
  28. #define SAFER_SK128_DEFAULT_NOF_ROUNDS  10
  29. #define SAFER_MAX_NOF_ROUNDS            13
  30. #define SAFER_BLOCK_LEN                  8
  31. #define SAFER_KEY_LEN     (1 + SAFER_BLOCK_LEN * (1 + 2 * SAFER_MAX_NOF_ROUNDS))
  32. /******************* Assertions ***********************************************/
  33. /******************* Macros ***************************************************/
  34. /******************* Types ****************************************************/
  35. typedef unsigned char safer_block_t[SAFER_BLOCK_LEN];
  36. typedef unsigned char safer_key_t[SAFER_KEY_LEN];
  37. /******************* Module Data **********************************************/
  38. /******************* Prototypes ***********************************************/
  39. /*******************************************************************************
  40. * void Safer_Init_Module(void)
  41. *
  42. *   initializes this module.
  43. *
  44. ********************************************************************************
  45. * void Safer_Expand_Userkey(safer_block_t userkey_1,
  46. *                           safer_block_t userkey_2,
  47. *                           unsigned int nof_rounds,
  48. *                           int strengthened,
  49. *                           safer_key_t key)
  50. *
  51. *   expands a user-selected key of length 64 bits or 128 bits to a encryption /
  52. *   decryption key. If your user-selected key is of length 64 bits, then give
  53. *   this key to both arguments 'userkey_1' and 'userkey_2', e.g.
  54. *   'Safer_Expand_Userkey(z, z, key)'. Note: SAFER K-64 and SAFER SK-64 with a
  55. *   user-selected key 'z' of length 64 bits are identical to SAFER K-128 and
  56. *   SAFER SK-128 with a user-selected key 'z z' of length 128 bits,
  57. *   respectively.
  58. *   pre:  'userkey_1'  contains the first 64 bits of user key.
  59. *         'userkey_2'  contains the second 64 bits of user key.
  60. *         'nof_rounds' contains the number of encryption rounds
  61. *                      'nof_rounds' <= 'SAFER_MAX_NOF_ROUNDS'
  62. *         'strengthened' is non-zero if the strengthened key schedule should be
  63. *                      used and zero if the original key schedule should be
  64. *                      used.
  65. *   post: 'key'        contains the expanded key.
  66. *
  67. ********************************************************************************
  68. * void Safer_Encrypt_Block(safer_block_t block_in, safer_key_t key,
  69. *                          safer_block_t block_out)
  70. *
  71. *   encryption algorithm.
  72. *   pre:  'block_in'  contains the plain-text block.
  73. *         'key'       contains the expanded key.
  74. *   post: 'block_out' contains the cipher-text block.
  75. *
  76. ********************************************************************************
  77. * void Safer_Decrypt_Block(safer_block_t block_in, safer_key_t key,
  78. *                          safer_block_t block_out)
  79. *
  80. *   decryption algorithm.
  81. *   pre:  'block_in'  contains the cipher-text block.
  82. *         'key'       contains the expanded key.
  83. *   post: 'block_out' contains the plain-text block.
  84. *
  85. *******************************************************************************/
  86. CEXTERN void Safer_Init_Module(void);
  87. CEXTERN void Safer_Expand_Userkey(safer_block_t userkey_1,
  88. safer_block_t userkey_2,
  89. unsigned int nof_rounds,
  90. int strengthened,
  91. safer_key_t key);
  92. CEXTERN void Safer_Encrypt_Block (safer_block_t block_in, safer_key_t key,
  93. safer_block_t block_out);
  94. CEXTERN void Safer_Decrypt_Block (safer_block_t block_in, safer_key_t key,
  95. safer_block_t block_out);
  96. /******************************************************************************/
  97. #endif /* SAFER_H */