资源简介
verilog实现AES加密和解密算法,可以移植到任何FPGA平台上面,具有良好的通用性,并且有C语言和Python的验证程序,非常的好!
代码片段和文件信息
/*
* Advanced Encryption Standard
* @author Dani Huertas
* @email huertas.dani@gmail.com
*
* based on the document FIPS PUB 197
*/
#include
#include
#include
/*
* Addition in GF(2^8)
* http://en.wikipedia.org/wiki/Finite_field_arithmetic
*/
uint8_t gadd(uint8_t a uint8_t b) {
return a^b;
}
/*
* Subtraction in GF(2^8)
* http://en.wikipedia.org/wiki/Finite_field_arithmetic
*/
uint8_t gsub(uint8_t a uint8_t b) {
return a^b;
}
/*
* Multiplication in GF(2^8)
* http://en.wikipedia.org/wiki/Finite_field_arithmetic
* Irreducible polynomial m(x) = x8 + x4 + x3 + x + 1
*/
uint8_t gmult(uint8_t a uint8_t b) {
uint8_t p = 0 i = 0 hbs = 0;
for (i = 0; i < 8; i++) {
if (b & 1) {
p ^= a;
}
hbs = a & 0x80;
a <<= 1;
if (hbs) a ^= 0x1b; // 0000 0001 0001 1011
b >>= 1;
}
return (uint8_t)p;
}
/*
* Addition of 4 byte words
* m(x) = x4+1
*/
void coef_add(uint8_t a[] uint8_t b[] uint8_t d[]) {
d[0] = a[0]^b[0];
d[1] = a[1]^b[1];
d[2] = a[2]^b[2];
d[3] = a[3]^b[3];
}
/*
* Multiplication of 4 byte words
* m(x) = x4+1
*/
void coef_mult(uint8_t *a uint8_t *b uint8_t *d) {
d[0] = gmult(a[0]b[0])^gmult(a[3]b[1])^gmult(a[2]b[2])^gmult(a[1]b[3]);
d[1] = gmult(a[1]b[0])^gmult(a[0]b[1])^gmult(a[3]b[2])^gmult(a[2]b[3]);
d[2] = gmult(a[2]b[0])^gmult(a[1]b[1])^gmult(a[0]b[2])^gmult(a[3]b[3]);
d[3] = gmult(a[3]b[0])^gmult(a[2]b[1])^gmult(a[1]b[2])^gmult(a[0]b[3]);
}
/*
* The cipher Key.
*/
int K;
/*
* Number of columns (32-bit words) comprising the State. For this
* standard Nb = 4.
*/
int Nb = 4;
/*
* Number of 32-bit words comprising the Cipher Key. For this
* standard Nk = 4 6 or 8.
*/
int Nk;
/*
* Number of rounds which is a function of Nk and Nb (which is
* fixed). For this standard Nr = 10 12 or 14.
*/
int Nr;
/*
* S-box transformation table
*/
static uint8_t s_box[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 // 0
0xca 0x82 0xc9 0x7d 0xfa 0x59 0x47 0xf0 0xad 0xd4 0xa2 0xaf 0x9c 0xa4 0x72 0xc0 // 1
0xb7 0xfd 0x93 0x26 0x36 0x3f 0xf7 0xcc 0x34 0xa5 0xe5 0xf1 0x71 0xd8 0x31 0x15 // 2
0x04 0xc7 0x23 0xc3 0x18 0x96 0x05 0x9a 0x07 0x12 0x80 0xe2 0xeb 0x27 0xb2 0x75 // 3
0x09 0x83 0x2c 0x1a 0x1b 0x6e 0x5a 0xa0 0x52 0x3b 0xd6 0xb3 0x29 0xe3 0x2f 0x84 // 4
0x53 0xd1 0x00 0xed 0x20 0xfc 0xb1 0x5b 0x6a 0xcb 0xbe 0x39 0x4a 0x4c 0x58 0xcf // 5
0xd0 0xef 0xaa 0xfb 0x43 0x4d 0x33 0x85 0x45 0xf9 0x02 0x7f 0x50 0x3c 0x9f 0xa8 // 6
0x51 0xa3 0x40 0x8f 0x92 0x9d 0x38 0xf5 0xbc 0xb6 0xda 0x21 0x10 0xff 0xf3 0xd2 // 7
0xcd 0x0c 0x13 0xec 0x5f 0x97 0x44 0x17 0xc4 0xa7 0x7e 0x3d 0x64 0x5d 0x19 0x73 // 8
0x60 0x81 0x4f 0xdc 0x22 0x2a 0x90 0x88 0x46 0xee
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-06 13:49 aes-master\
文件 1303 2018-03-31 22:29 aes-master\LICENSE
文件 4717 2018-03-31 22:29 aes-master\README.md
目录 0 2018-03-31 22:33 aes-master\src\
目录 0 2018-03-31 22:33 aes-master\src\aes_c\
文件 18357 2018-03-31 22:29 aes-master\src\aes_c\a.out
文件 13550 2018-03-31 22:29 aes-master\src\aes_c\aes_c.c
目录 0 2018-03-31 22:33 aes-master\src\db\
文件 437731 2018-03-31 22:29 aes-master\src\db\sc.sdb
文件 4453603 2018-03-31 22:29 aes-master\src\db\sc_max.db
文件 4401067 2018-03-31 22:29 aes-master\src\db\sc_min.db
目录 0 2018-03-31 22:33 aes-master\src\model\
目录 0 2018-03-31 22:33 aes-master\src\model\python\
文件 32894 2018-03-31 22:29 aes-master\src\model\python\aes.py
文件 22825 2018-03-31 22:29 aes-master\src\model\python\aes_key_gen.py
文件 23929 2018-03-31 22:29 aes-master\src\model\python\rcon.py
目录 0 2018-03-31 22:33 aes-master\src\rtl\
文件 8480 2018-03-31 22:29 aes-master\src\rtl\aes.v
文件 10460 2018-03-31 22:29 aes-master\src\rtl\aes_core.v
文件 15533 2018-03-31 22:29 aes-master\src\rtl\aes_decipher_block.v
文件 14365 2018-03-31 22:29 aes-master\src\rtl\aes_encipher_block.v
文件 11448 2018-03-31 22:29 aes-master\src\rtl\aes_inv_sbox.v
文件 12671 2018-03-31 22:29 aes-master\src\rtl\aes_key_mem.v
文件 10466 2018-03-31 22:29 aes-master\src\rtl\aes_sbox.v
目录 0 2018-03-31 22:33 aes-master\src\simc\
文件 747 2018-03-31 22:29 aes-master\src\simc\Modify_SDF_2_1.pl
文件 426505 2018-03-31 22:29 aes-master\src\simc\smic13.v
文件 6469912 2018-03-31 22:29 aes-master\src\simc\smic13_ff.db
文件 17382084 2018-03-31 22:29 aes-master\src\simc\smic13_ff.lib
文件 6469913 2018-03-31 22:29 aes-master\src\simc\smic13_ss.db
文件 17256941 2018-03-31 22:29 aes-master\src\simc\smic13_ss.lib
............此处省略183个文件信息
相关资源
- AES GCM算法源码
- AES 加密 C++源码
- stm32L系列F系列 加密库Cryptographic lib
- VC++ AES加密算法实现与范例的源代码
- MFC实现AES非对称加密解密算法
- AES加解密算法实现MFC
- 高级加密标准 AES (含AES的数学基础,
- AES加密/解密C++源代码
- AES算法加密解密C++源码及程序完整的
- AES GCM和ECB加密软件,和工程文件
- 流水线CPU Verilog设计
- AES加密解密算法实现C、C++
- AES加密解密程序(C++)+实验报告
- aes加密算法源码
- AES MFC
- AES加密的HLS实现与优化
- 夏宇闻-Verilog经典教程
- SystemVerilog验证 测试平台编写指南
- 混合加密程序 VC++包括DES加密和AES加密
- AES CBC加解密源代码
- AES 算法实现(linux) 可移植
- CMAES算法C++
- AesForC.rar
- AES加密算法C++语言实现
- AES对称加密解密文件
- 支持异常和中断的CPU verilog设计和仿真
- AES加密可加密文件
- AES5种加密模式源码C语言
- AES密码学课程设计带报告
- AES加密算法(C++实现)
评论
共有 条评论