资源简介
在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个文件信息
相关资源
- AES加密算法C++语言实现
- AES对称加密解密文件
- AES加密可加密文件
- AES5种加密模式源码C语言
- AES密码学课程设计带报告
- AES加密算法(C++实现)
- AES 加密算法接口及演示程序
- AES加密算法c语言实现代码
- AES128/192/256 C语言实现AES加密/解密实测
- AES加密算法C语言实现,有测试代码,
- 常用加密算法AES、RSA、DES、MD5、TEA、
- AES 128位加解密C++源码(加盐)
- AES详细源码C语言实现带注释
- AES算法的C语言版本
- AES/ECB/PKCS5Padding C++实现
- C语言环境下的AES加密算法,支持128位
- AES快速实现,加密速度大约1.4G/s,不
- AES多种加密解密方式C语言方式实现
- aes密钥扩展C语言实现
- C语言 3DES、AES、RC6、TEA、RSA、MD5、S
- C语言实现的AES加密解密
- AES、DES加密算法C语言源码
- AES 加解密c++
- AES s盒生成代码
- AES加密解密系统 VC++6.0 实现
- AES密码算法C语言实现
- C语言 stm32 AES加密解密
- AES单片机加密解密 C语言源代码
- aes算法实现C++)
- AES任意文件长度加解密C语言实现
评论
共有 条评论