资源简介
AES密码算法C语言实现 包含Spec ,代码实现及测试用例。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
代码片段和文件信息
#include
#include
// The number of columns comprising a state in AES. This is a constant in AES. Value=4
int Nb=4;
// The number of rounds in AES Cipher. It is simply initiated to zero. The actual value is recieved in the program.
int Nr=0;
// The number of 32 bit words in the key. It is simply initiated to zero. The actual value is recieved in the program.
int Nk=0;
//Nc: the length of Key(128 192 or 256) only
int Nc = 128; //Nk = Nc/32
// in - it is the array that holds the CipherText to be decrypted.
// out - it is the array that holds the output of the for decryption.
// state - the array that holds the intermediate results during decryption.
unsigned char in[16] out[32] state[4][4];
// The array that stores the round keys.
unsigned char RoundKey[240];
// The Key input to the AES Program
unsigned char Key[32];
int getSBoxInvert(int num)
{
int rsbox[256] =
{ 0x52 0x09 0x6a 0xd5 0x30 0x36 0xa5 0x38 0xbf 0x40 0xa3 0x9e 0x81 0xf3 0xd7 0xfb
0x7c 0xe3 0x39 0x82 0x9b 0x2f 0xff 0x87 0x34 0x8e 0x43 0x44 0xc4 0xde 0xe9 0xcb
0x54 0x7b 0x94 0x32 0xa6 0xc2 0x23 0x3d 0xee 0x4c 0x95 0x0b 0x42 0xfa 0xc3 0x4e
0x08 0x2e 0xa1 0x66 0x28 0xd9 0x24 0xb2 0x76 0x5b 0xa2 0x49 0x6d 0x8b 0xd1 0x25
0x72 0xf8 0xf6 0x64 0x86 0x68 0x98 0x16 0xd4 0xa4 0x5c 0xcc 0x5d 0x65 0xb6 0x92
0x6c 0x70 0x48 0x50 0xfd 0xed 0xb9 0xda 0x5e 0x15 0x46 0x57 0xa7 0x8d 0x9d 0x84
0x90 0xd8 0xab 0x00 0x8c 0xbc 0xd3 0x0a 0xf7 0xe4 0x58 0x05 0xb8 0xb3 0x45 0x06
0xd0 0x2c 0x1e 0x8f 0xca 0x3f 0x0f 0x02 0xc1 0xaf 0xbd 0x03 0x01 0x13 0x8a 0x6b
0x3a 0x91 0x11 0x41 0x4f 0x67 0xdc 0xea 0x97 0xf2 0xcf 0xce 0xf0 0xb4 0xe6 0x73
0x96 0xac 0x74 0x22 0xe7 0xad 0x35 0x85 0xe2 0xf9 0x37 0xe8 0x1c 0x75 0xdf 0x6e
0x47 0xf1 0x1a 0x71 0x1d 0x29 0xc5 0x89 0x6f 0xb7 0x62 0x0e 0xaa 0x18 0xbe 0x1b
0xfc 0x56 0x3e 0x4b 0xc6 0xd2 0x79 0x20 0x9a 0xdb 0xc0 0xfe 0x78 0xcd 0x5a 0xf4
0x1f 0xdd 0xa8 0x33 0x88 0x07 0xc7 0x31 0xb1 0x12 0x10 0x59 0x27 0x80 0xec 0x5f
0x60 0x51 0x7f 0xa9 0x19 0xb5 0x4a 0x0d 0x2d 0xe5 0x7a 0x9f 0x93 0xc9 0x9c 0xef
0xa0 0xe0 0x3b 0x4d 0xae 0x2a 0xf5 0xb0 0xc8 0xeb 0xbb 0x3c 0x83 0x53 0x99 0x61
0x17 0x2b 0x04 0x7e 0xba 0x77 0xd6 0x26 0xe1 0x69 0x14 0x63 0x55 0x21 0x0c 0x7d };
return rsbox[num];
}
int getSBoxValue(int num)
{
int sbox[256] = {
//0 1 2 3 4 5 6 7 8 9 A B C D E F
0x63 0x7c 0x77 0x7b 0xf2 0x6b 0x6f 0xc5 0x30 0x01 0x67 0x2b 0xfe 0xd7 0xab 0x76
0xca 0x82 0xc9 0x7d 0xfa 0x59 0x47 0xf0 0xad 0xd4 0xa2 0xaf 0x9c 0xa4 0x72 0xc0
0xb7 0xfd 0x93 0x26 0x36 0x3f 0xf7 0xcc 0x34 0xa5 0xe5 0xf1 0x71 0xd8 0x31 0x15
0x04 0xc
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 17428 2017-08-29 15:35 aes\aes.c
文件 1279555 2017-08-09 16:14 aes\AES标准文档fips-197.pdf
目录 0 2017-08-29 15:35 aes
----------- --------- ---------- ----- ----
1296983 3
- 上一篇:VC++access与excel数据的导入导出
- 下一篇:c语言 实现费诺编码
相关资源
- C语言 stm32 AES加密解密
- 史上最全经典数据结构算法c语言实现
- ELGamal加解密(c语言实现).zip
- RSA加解密c语言实现.zip
- 操作系统调度算法c语言实现
- c语言实现中缀表达式转后缀并求值
- c语言实现考试管理系统选择题
- 这是用C语言实现模糊控制的算法程序
- 用C语言实现DPSK数字信号调制
- 模拟文件系统的c语言实现
- 基于C语言实现的网络爬虫
- 国密SM4的5中模式C语言实现,vs工程,
- c语言实现Socket套接字通信
- C语言实现matlab的butter函数
- 字符串匹配算法详解 BM算法 c语言
- c语言实现的发送邮件
- AES单片机加密解密 C语言源代码
- RC4加解密 C语言实现
- C语言实现ARP攻击
- c语言实现找零钱问题
- C语言实现心跳包Heart Beat
- 表达式求值C语言实现
- 矩阵运算C语言实现
- 纯C语言实现工资管理系统
- c语言实现获取文件的md5哈希值
- 文件系统c语言实现,在linux下编译
- B树 C语言实现
- aes算法实现C++)
- linux下用C语言实现寻找1到1亿内的素数
- linux下C语言实现简易web服务器
评论
共有 条评论