70 lines
2.7 KiB
C
70 lines
2.7 KiB
C
|
///////////////////////////////////////////////////////////////////////////////
|
|||
|
// <20><> <20><> <20><><EFBFBD><EFBFBD>AES.h
|
|||
|
// <20><> <20><><EFBFBD><EFBFBD>AES<45><53><EFBFBD><EFBFBD><EFBFBD>㷨
|
|||
|
// <20><> <20><> <20>ˣ<EFBFBD>Liangbofu
|
|||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>2009-07-17
|
|||
|
///////////////////////////////////////////////////////////////////////////////
|
|||
|
#ifndef __WECHAT_AES_H
|
|||
|
#define __WECHAT_AES_H
|
|||
|
|
|||
|
#ifdef __cplusplus
|
|||
|
extern "C" {
|
|||
|
#endif
|
|||
|
|
|||
|
// <20><>bitΪ<74><CEAA>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Կ<EFBFBD><D4BF><EFBFBD>ȣ<EFBFBD>ֻ<EFBFBD><D6BB>Ϊ 128<32><38>192 <20><> 256 <20><><EFBFBD><EFBFBD>
|
|||
|
#define AES_KEY_LENGTH 128
|
|||
|
|
|||
|
// <20>ӽ<EFBFBD><D3BD><EFBFBD>ģʽ
|
|||
|
#define AES_MODE_ECB 0 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뱾ģʽ<C4A3><CABD>һ<EFBFBD><D2BB>ģʽ<C4A3><CABD>
|
|||
|
#define AES_MODE_CBC 1 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
#define AES_MODE AES_MODE_CBC
|
|||
|
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////////////////////////
|
|||
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AES_Init
|
|||
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD>չ<EFBFBD><D5B9>Կ<EFBFBD><D4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pKey -- ԭʼ<D4AD><CABC>Կ<EFBFBD><D4BF><EFBFBD>䳤<EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD>Ϊ AES_KEY_LENGTH/8 <20>ֽڡ<D6BD>
|
|||
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09>ޡ<EFBFBD>
|
|||
|
// <09><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> <09>ޡ<EFBFBD>
|
|||
|
///////////////////////////////////////////////////////////////////////////////
|
|||
|
void AES_Init(const void *pKey);
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AES_Encrypt
|
|||
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pPlainText -- <20><><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>䳤<EFBFBD><E4B3A4>ΪnDataLen<65>ֽڡ<D6BD>
|
|||
|
// nDataLen -- <20><><EFBFBD>ݳ<EFBFBD><DDB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪAES_KEY_LENGTH/8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// pIV -- <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ECBģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL<4C><4C>
|
|||
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pCipherText -- <20><><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pPlainText<78><74>ͬ<EFBFBD><CDAC>
|
|||
|
// <09><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> <09>ޡ<EFBFBD>
|
|||
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
void AES_Encrypt(const unsigned char *pPlainText, unsigned char *pCipherText,
|
|||
|
unsigned int nDataLen, const unsigned char *pIV);
|
|||
|
|
|||
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AES_Decrypt
|
|||
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pCipherText -- <20><><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3>䳤<EFBFBD><E4B3A4>ΪnDataLen<65>ֽڡ<D6BD>
|
|||
|
// nDataLen -- <20><><EFBFBD>ݳ<EFBFBD><DDB3>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪAES_KEY_LENGTH/8<><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
// pIV -- <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>ECBģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪNULL<4C><4C>
|
|||
|
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pPlainText -- <20><><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľ<EFBFBD><C4BD>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pCipherText<78><74>ͬ<EFBFBD><CDAC>
|
|||
|
// <09><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5> <09>ޡ<EFBFBD>
|
|||
|
//////////////////////////////////////////////////////////////////////////
|
|||
|
void AES_Decrypt(unsigned char *pPlainText, const unsigned char *pCipherText,
|
|||
|
unsigned int nDataLen, const unsigned char *pIV);
|
|||
|
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD>н<EFBFBD><D0BD>ܲ<EFBFBD><DCB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʧ<EFBFBD>ܷ<EFBFBD><DCB7><EFBFBD>0
|
|||
|
unsigned char app_data_encode_aes(char *input, char *output, unsigned short *slen);
|
|||
|
unsigned char app_data_decode_aes(unsigned char *input, char *output, unsigned short *slen);
|
|||
|
unsigned int AES_Encrypt_PKCS7(const unsigned char *pPlainText, unsigned char *pCipherText,
|
|||
|
unsigned int nDataLen, const unsigned char *pIV);
|
|||
|
unsigned int AES_get_length(unsigned int length);
|
|||
|
void AES_free(unsigned char* p);
|
|||
|
#ifdef __cplusplus
|
|||
|
}
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
#endif // __WECHAT_AES_H
|
|||
|
|