資源簡介
在VC 6.0平臺上基于C語言實現的AES加解密源碼,在VC 6.0平臺上基于C語言實現的AES加解密源碼,在VC 6.0平臺上基于C語言實現的AES加解密源碼。

代碼片段和文件信息
#include
#include
#include?“aes.h“
#include?“conf.c“
#ifndef?GET_UINT32
//宏定義一個移位操把數組b的四個值賦值給n
#define?GET_UINT32(nbi)?do?{?\
(n)?=?((uint32_t)(b)[(i)????]??????)?\
|?((uint32_t)(b)[(i)?+?1]?<?8)?\
|?((uint32_t)(b)[(i)?+?2]?<16)?\
|?((uint32_t)(b)[(i)?+?3]?<24);\
}?while(0)
#endif
#define?ROTL8(x)?(((x)?<24)?|?((x)?>>?8))
#define?ROTL16(x)?(((x)?<16)?|?((x)?>>?16))
#define?ROTL24(x)?(((x)?<8)?|?((x)?>>?24))
//s盒替換每一位
#define?SUB_WORD(x)?(((uint32_t)S_BOX[(x)&0xFF])?\
|?((uint32_t)S_BOX[((x)?>>??8)&0xFF]?<8)?\
|?((uint32_t)S_BOX[((x)?>>?16)&0xFF]?<16)?\
|?((uint32_t)S_BOX[((x)?>>?24)&0xFF]?<24)?\
)
#define?sub_bytes(state)?_sub_bytes(state?S_BOX)
#define?inv_sub_bytes(state)?_sub_bytes(state?INV_S_BOX)
#define?shift_rows(state)?_shift_rows(state?ROTL8?ROTL16?ROTL24)
#define?inv_shift_rows(state)?_shift_rows(state?ROTL24?ROTL16?ROTL8)
#define?mix_columns(state)?_mix_columns(state?MIX)
#define?inv_mix_columns(state)?_mix_columns(state?INV_MIX)
//行移位
#define?_shift_rows(state?OP1?OP2?OP3)?do?{?\
transport(state);?\
*(uint32_t?*)(state+4)?=?OP1(*(uint32_t?*)(state+4));?\
*(uint32_t?*)(state+8)?=?OP2(*(uint32_t?*)(state+8));?\
*(uint32_t?*)(state+12)?=?OP3(*(uint32_t?*)(state+12));?\
transport(state);?\
}?while(0)
/****************************************************************************?
Description:??????????行移位處理函數(transport)?
Input?parameters:????????
????????????????????????uint8_t?state:需要行移位的數組???????????????????????????????????????
Output?parameters:???????
????????????????????????uint8_t?state:行移位的結果
?????????????????????????
Returned?value:??????
????????????????????????NULL
Created?by:??????????
????????????????????????崔龍龍?(2017-09-01)?
Modified?by:?????????????
????????????????????????NULL?
****************************************************************************/??
static?void?transport(uint8_t?state[BLOCK_SIZE])
{
uint8_t?_state[4][4];
int?rc;
assert(state?!=?NULL);//對參數校驗
for?(r?=?0;?r?4;?++r)
for?(c?=?0;?c?4;?++c)
_state[r][c]?=?state[(c<<2)+r];
memcpy(state?_state?sizeof(_state));
}
/****************************************************************************?
Description:???????????數組異或(add_round_key)?輪密鑰加
Input?parameters:????????
????????????????????????uint8_t?state:需要求異或的數組1
????????????????????????const?uint8_t?key?:?需要求異或的數組2??????????????????????
Output?parameters:???????
????????????????????????uint8_t?state:求異或后的結果
?????????????????????????
Returned?value:??????
????????????????????????NULL
Created?by:??????????
????????????????????????崔龍龍?(2017-09-01)?
Modified?by:?????????????
????????????????????????NULL?
****************************************************************************/??
static?void?add_round_key(uint8_t?state[BLOCK_SIZE]?const?uint8_t?key[BLOCK_SIZE])
{
int?i;
assert(state?!=?NULL);//對參數校驗
assert(key?!=?NULL);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????13813??2017-09-02?10:08??AesForC\aes.c
?????文件????????735??2017-08-30?10:08??AesForC\aes.h
?????文件???????4466??2017-09-01?16:26??AesForC\AesForC.dsp
?????文件????????522??2017-09-01?16:26??AesForC\AesForC.dsw
?????文件??????41984??2017-09-02?10:20??AesForC\AesForC.ncb
?????文件??????49664??2017-09-02?10:20??AesForC\AesForC.opt
?????文件????????248??2017-09-02?10:19??AesForC\AesForC.plg
?????文件???????3437??2017-09-01?18:28??AesForC\conf.c
?????文件??????15592??2017-09-02?10:19??AesForC\Debug\aes.obj
?????文件?????180286??2017-09-02?10:19??AesForC\Debug\AesForC.exe
?????文件?????231044??2017-09-02?10:19??AesForC\Debug\AesForC.ilk
?????文件?????173636??2017-09-02?10:19??AesForC\Debug\AesForC.pch
?????文件?????451584??2017-09-02?10:19??AesForC\Debug\AesForC.pdb
?????文件???????2241??2017-09-01?18:35??AesForC\Debug\conf.obj
?????文件???????5801??2017-09-02?10:19??AesForC\Debug\main.obj
?????文件??????33792??2017-09-02?10:19??AesForC\Debug\vc60.idb
?????文件??????53248??2017-09-02?10:19??AesForC\Debug\vc60.pdb
?????文件????????430??2017-09-02?10:26??AesForC\Log.txt
?????文件???????3002??2017-09-02?09:11??AesForC\main.c
?????文件???????4096??2017-09-01?16:08??AesForC\si\AES.IAB
?????文件????????368??2017-09-01?16:08??AesForC\si\AES.IAD
?????文件???????4096??2017-09-01?16:08??AesForC\si\AES.IMB
?????文件????????368??2017-09-01?16:08??AesForC\si\AES.IMD
?????文件?????????20??2017-09-02?10:26??AesForC\si\AES.PFI
?????文件????????776??2017-09-02?10:26??AesForC\si\AES.PO
?????文件???????2072??2017-09-02?10:21??AesForC\si\AES.PR
?????文件??????10632??2017-09-02?10:21??AesForC\si\AES.PRI
?????文件???????8940??2017-09-02?10:26??AesForC\si\AES.PS
?????文件??????15125??2017-09-02?10:26??AesForC\si\AES.WK3
?????目錄??????????0??2017-09-02?10:19??AesForC\Debug
............此處省略5個文件信息
評論
共有 條評論