• 大小: 183KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-15
  • 语言: C/C++
  • 标签: AES  

资源简介

在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个文件信息

评论

共有 条评论