• 大小: 50.61MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-11-29
  • 语言: C/C++
  • 标签: AES  verilog  

资源简介

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

评论

共有 条评论