⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rijndael-api-ref.h

📁 Arithmetic for integers of almost rijndael for C and C++. Developed for linux
💻 H
字号:
/* rijndael-api-ref.h   v2.0   August '99 * Reference ANSI C code *//*  AES Cipher header file for ANSI C Submissions      Lawrence E. Bassham III      Computer Security Division      National Institute of Standards and Technology      April 15, 1998    This sample is to assist implementers developing to the Cryptographic API Profile for AES Candidate Algorithm Submissions.  Please consult this document as a cross-reference.    ANY CHANGES, WHERE APPROPRIATE, TO INFORMATION PROVIDED IN THIS FILEMUST BE DOCUMENTED.  CHANGES ARE ONLY APPROPRIATE WHERE SPECIFIED WITHTHE STRING "CHANGE POSSIBLE".  FUNCTION CALLS AND THEIR PARAMETERS CANNOT BE CHANGED.  STRUCTURES CAN BE ALTERED TO ALLOW IMPLEMENTERS TO INCLUDE IMPLEMENTATION SPECIFIC INFORMATION.*//*  Includes:	Standard include files*/#include <stdio.h>#include "rijndael-alg-ref.h"/*  Defines:	Add any additional defines you need*/#define     DIR_ENCRYPT     0    /*  Are we encrpyting?  */#define     DIR_DECRYPT     1    /*  Are we decrpyting?  */#define     MODE_ECB        1    /*  Are we ciphering in ECB mode?   */#define     MODE_CBC        2    /*  Are we ciphering in CBC mode?   */#define     MODE_CFB1       3    /*  Are we ciphering in 1-bit CFB mode? */#define     TRUE            1#define     FALSE           0#define	BITSPERBLOCK		128		/* Default number of bits in a cipher block *//*  Error Codes - CHANGE POSSIBLE: inclusion of additional error codes  */#define     BAD_KEY_DIR        -1  /*  Key direction is invalid, e.g.,					unknown value */#define     BAD_KEY_MAT        -2  /*  Key material not of correct 					length */#define     BAD_KEY_INSTANCE   -3  /*  Key passed is not valid  */#define     BAD_CIPHER_MODE    -4  /*  Params struct passed to 					cipherInit invalid */#define     BAD_CIPHER_STATE   -5  /*  Cipher in wrong state (e.g., not 					initialized) */#define     BAD_CIPHER_INSTANCE   -7 /*  CHANGE POSSIBLE:  inclusion of algorithm specific defines  */#define     MAX_KEY_SIZE	64  /* # of ASCII char's needed to					represent a key */#define     MAX_IV_SIZE		BITSPERBLOCK/8  /* # bytes needed to					represent an IV  *//*  Typedefs:	Typedef'ed data storage elements.  Add any algorithm specific parameters at the bottom of the structs as appropriate.*/typedef    unsigned char    BYTE;/*  The structure for key information */typedef struct {      BYTE  direction;	/*  Key used for encrypting or decrypting? */      int   keyLen;	/*  Length of the key  */      char  keyMaterial[MAX_KEY_SIZE+1];  /*  Raw key data in ASCII,                                    e.g., user input or KAT values */      /*  The following parameters are algorithm dependent, replace or      		add as necessary  */      int   blockLen;   /* block length */      word8 keySched[MAXROUNDS+1][4][MAXBC];	/* key schedule		*/      } keyInstance;/*  The structure for cipher information */typedef struct {      BYTE  mode;            /* MODE_ECB, MODE_CBC, or MODE_CFB1 */      BYTE  IV[MAX_IV_SIZE]; /* A possible Initialization Vector for       					ciphering */      /*  Add any algorithm specific parameters needed here  */      int   blockLen;    	/* Sample: Handles non-128 bit block sizes      					(if available) */      } cipherInstance;/*  Function protoypes  *//*  CHANGED: makeKey(): parameter blockLen added                        this parameter is absolutely necessary if you want to			setup the round keys in a variable block length setting 	     cipherInit(): parameter blockLen added (for obvious reasons)		 */int makeKey(keyInstance *key, BYTE direction, int keyLen, char *keyMaterial);int cipherInit(cipherInstance *cipher, BYTE mode, char *IV);int blockEncrypt(cipherInstance *cipher, keyInstance *key, BYTE *input, 			int inputLen, BYTE *outBuffer);int blockDecrypt(cipherInstance *cipher, keyInstance *key, BYTE *input,			int inputLen, BYTE *outBuffer);int cipherUpdateRounds(cipherInstance *cipher, keyInstance *key, BYTE *input,                         int inputLen, BYTE *outBuffer, int Rounds);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -