C++自己实现AES算法
作者:网络转载 发布时间:[ 2014/12/17 11:03:46 ] 推荐标签:C++ 编译 算法
在移动端需要安全算法时,直接使用开源库可能不合适(开源库都比较大,也可以自己抽取需要的代码),本Demo是根据AES的原理来实现算法,采用ECB/PKCS5Padding,实现短小精悍!!
注意:本算法在生成加密key时,使用了md5算法,编译本demo需要依赖 C++自行实现MD5算法 里面的算法。
#ifndef _AES_20140317_H_
#define _AES_20140317_H_
#define Bits128 16
#define Bits192 24
#define Bits256 32
#define ENCRYPT_BLOCK_SIZE 16
#define SUCESS 0
#define TRUE 1
#include "md5.h"
#include <stdio.h>
#include <malloc.h>
typedef unsigned char _u8;
typedef int _int32;
typedef unsigned int _u32;
typedef struct
{
_int32 Nb;
_int32 Nk;
_int32 Nr;
_u8 State[4][4];
_u8 key[32];
_u8 w[16 * 15];
} ctx_aes;
enum AESKeyLength
{
AES_KEY_LENGTH_16 = 16, AES_KEY_LENGTH_24 = 24, AES_KEY_LENGTH_32 = 32
};
namespace comm
{
namespace util
{
class AES
{
public:
AES();
~AES()
{
if (Sbox != NULL)
{
delete []Sbox;
Sbox = NULL;
}
if (iSbox != NULL)
{
delete []iSbox;
iSbox = NULL;
}
if (Rcon != NULL)
{
delete []Rcon;
Rcon = NULL;
}
}
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11