1.软件版本

ISE14.7

2.本算法理论知识

AES加解密的流程图如下所示:

其中Sbox过程如下:

shiftRow过程如下:

mixcolumns过程如下:

AddRoundKey过程如下:

3.部分核心代码

`timescale 1ns / 1psmodule aes_tops(Clock,Reset,loads,enc_dec,din,FEK,Ready,dout,Ready_Valid,douts_Valid);input        Clock;
input        Reset;
input        loads;
input        enc_dec;
input [127:0]din;
input [127:0]FEK;
output       Ready;
output[127:0]dout;
output       Ready_Valid;
output[127:0]douts_Valid;
//==============================================
wire [127:0]new_key_generator;
wire        new_key_ready;
wire        new_key_sbox_access;
wire [7:0]  new_key_sbox_dout;
wire        new_key_sbox_decrypt;wire        mixcol_ready;
wire [127:0]mixcol_dout;wire        sub_ready;
wire [127:0]sub_dout;
wire [7:0]  sub_sbox_dout;
wire        sub_sbox_decrypt;wire [7:0]  sbox_dout;//===============================================
reg        Ready;
reg [127:0]dout;
reg        Ready_Valid;
reg [127:0]douts_Valid;reg        next_ready;
reg        new_key_Start;
reg [3:0]  new_key_round;
reg [127:0]new_key_last_key;reg        mix_start;
reg [127:0]mix_din;reg        sub_start;
reg [127:0]sub_din;
reg [7:0]  sbox_din;
reg        sbox_decrypt;
reg        state;reg        next_state;
reg [3:0]  round;
reg [3:0]  next_round;reg [127:0]addroundkey_dout;
reg [127:0]Next_addroundkey_dout;reg [127:0]addroundkey_data_reg;
reg [127:0]addroundkey_din;
reg        addroundkey_Ready;
reg        next_addroundkey_Ready;
reg        addroundkey_start;
reg        next_addroundkey_start;
reg [3:0]  addroundkey_round;
reg [3:0]  next_addroundkey_round;
reg        first_round_reg;
reg        next_first_round_reg;
reg[127:0] data_var;
reg[127:0] round_data_var;
reg[127:0] round_key_var;//SBOX
Sbox_process Sbox_process_u(.i_clk    (Clock), .i_rst    (Reset), .i_din    (sbox_din), .i_enc_dec(sbox_decrypt), .o_dout   (sbox_dout));Sub_bit Sub_bit_u(.i_clk          (Clock), .i_rst          (Reset), .i_start        (sub_start), .i_enc_dec      (enc_dec), .i_din          (sub_din), .o_ready        (sub_ready), .o_dout         (sub_dout), .o_Sboxout      (sub_sbox_dout), .o_Sboxdin      (sbox_dout), .o_Sboxed       (sub_sbox_decrypt));Mix_Col Mix_Col_u(.i_clk    (Clock), .i_rst    (Reset), .i_enc_dec(enc_dec), .i_start  (mix_start), .i_din    (mix_din), .o_ready  (mixcol_ready), .o_dout   (mixcol_dout));AES_Secret AES_Secret_u(.i_clk         (Clock), .i_rst         (Reset), .i_start       (new_key_Start), .i_round       (new_key_round), .i_key1        (new_key_last_key), .o_key2        (new_key_generator), .o_ready       (new_key_ready), .o_Sboxi       (new_key_sbox_access), .o_Sbox_dout   (new_key_sbox_dout), .i_Sbox_din    (sbox_dout), .o_Sbox_decrypt(new_key_sbox_decrypt));`include "process_.txt"endmodule

4.操作步骤与仿真结论

加密和解密过程如下所示:

从仿真结果可知,

clear txt  is '0000a1e4000009260000009b00000017',

the key txt is '0000000000 0000002468acf13579bde00'.

所以加密数据是 '652f967f0420c56df7177a38cd956270',

解密数据是'0000a1e4000009260000009b00000017',

通过布局布线之后,可以看到芯片的结构大概如下所示:

5.参考文献

这个部分,对应的理论参考文献为:

第一部分:S盒的设计(对应代码为:sbox_tops.v

S盒对应的理论为:

第二部分:这篇论文中的2.2,轮变化。

这个部分的主要理论,我们主要见

A29-03

【AES】基于FPGA的128位AES加解密系统设计实现相关推荐

  1. 基于Java的SQL Server数据库加解密系统设计与实现

    目 录 摘 要 1 ABSTRACT 2 第1章 绪论 3 1.1 数据库加解密系统开发背景 3 1.2 国内外现状 3 1.3 本文的主要工作 4 1.4 论文的组织结构 4 第2章 数据库加密的基 ...

  2. AES 128位CBC加密解密(不使用固定IV)

    安全检查时要求账号和密码加密后才能存到数据库中,要求加密算法如下: 1)分组密码算法:AES(密钥长度在128位及以上)(GCM或CBC模式) 2)流密码算法:AES(密钥长度在128位及以上)(OF ...

  3. 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密

    学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA  AES  RSA AES  混合加密  整合 前言:    为了提高安全性采用了RSA,但 ...

  4. 基于FPGA平台RISCV架构的SOC应用系统设计1

    基于FPGA平台RISCV架构的SOC应用系统设计1 ​ 本系列文章是参加第四届"复微杯"全国大学生电子设计大赛 FPGA 赛道的作品,该平台基于 RISCV,要求在 FPGA 平 ...

  5. 基于FPGA平台RISCV架构的SOC应用系统设计3

    基于FPGA平台RISCV架构的SOC应用系统设计3 ​ 本系列文章是参加第四届"复微杯"全国大学生电子设计大赛 FPGA 赛道的作品,该平台基于 RISCV,要求在 FPGA 平 ...

  6. 基于CH375的嵌入式USB文件加解密系统的设计

    基于CH375的嵌入式USB文件加解密系统的设计 [日期:2008-7-21] 来源:电子技术应用  作者:华中科技大学 电子与信息工程系, 湖北 武汉 430074 [字体:大 中 小] <s ...

  7. 基于FPGA的两位按键控制LED数码管加减计数实验

    两位按键控制LED数码管加减计数实验 这是一篇拖了一个多月的文章,主要是基于FPGA利用按键消抖原理与动态数码管驱动原理相结合,来实现一个利用两位按键来控制数码管实现0-99的加法计数或者减法计数功能 ...

  8. 128位java_Java:如何使用CFB和无填充实现128位AES

    有人能给我带来这个问题吗? 我需要知道如何使用AES加密和解密,至少使用128位CFB和无填充. 一些代码或链接将非常赞赏. (我已经看过谷歌,但没有幸运的艰难). 更新: 工作正常! public ...

  9. js aes加密_nodejs中使用Crypto-JS对图片进行加解密

    在用nodejs开发后台的时候,为了安全的需要,经常会有加密的需求,对前端传入的图片进行AES加密后存储,然后在前端调用的时候,对图片进行解密,并返回Base64编码格式的图片. Crypto-JS这 ...

  10. 基于FPGA的DDR3多端口读写存储管理系统设计

    机载视频图形显示系统主要实现2D图形的绘制,构成各种飞行参数画面,同时叠加实时的外景视频.由于FPGA具有强大逻辑资源.丰富IP核等优点,基于 FPGA的嵌入式系统架构是机载视频图形显示系统理想的架构 ...

最新文章

  1. Layui 表格编辑
  2. 2.11 linux的软防火墙apf安装配置
  3. 【RecyclerView】 十五、使用 ItemTouchHelper 实现 RecyclerView 拖动排序 ( ItemTouchHelper 简介 )
  4. python英文文献_python英文文献
  5. CeneOS中使用Docker安装Gitlab
  6. python 中map()和lamda的简单实用
  7. Solaris - 使用TAB键自动补全和显示当前用户与目录
  8. javascript进制转换_《算法笔记》3.5小节——入门模拟-gt;进制转换
  9. matlab veristand,matlab和NI VeriStand联合仿真环境搭建(一)
  10. java strlen,跟妹妹聊到 Java 16 新特征,真香!
  11. error C2143: 语法错误 : 缺少“;”(在“using”的前面)
  12. 基于LSTM搭建文本情感分类的深度学习模型:准确率95%
  13. 利用GDB、KGDB调试应用程序及内核驱动模块
  14. 达尔豪西大学 计算机科学,西安大略大学和达尔豪西大学哪个好
  15. 三星i865刷android,三星S11加持黑科技,16GB+骁龙865,手机流畅度超越电脑
  16. throw 和 throws 的区别
  17. Nginx的安装和应用(详细介绍)
  18. 0x80073712_win10系统-更新失败提示“0x80073712”如何解决?
  19. Oracle 数据库学习
  20. Dalvik 指令学习

热门文章

  1. OpenHarmony更新编译问题及解决办法
  2. 基于51单片机的电子密码锁设计
  3. Arduino 使用 LCD1602 显示屏IIC驱动
  4. thinkphp5.1生成错误日志文件以及Evn的使用
  5. 区域化管理 让多光伏电站运维“1+1>2”
  6. 学生来看我,我自我满足...........
  7. Boostnote:适合程序员的笔记软件
  8. 2022 年牛客多校第五场补题记录
  9. svchost.exe网速占用解决办法
  10. 使用antd-design-vue配合vue框架搭建项目使用组件显示英文的解决办法