【AES】基于FPGA的128位AES加解密系统设计实现
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加解密系统设计实现相关推荐
- 基于Java的SQL Server数据库加解密系统设计与实现
目 录 摘 要 1 ABSTRACT 2 第1章 绪论 3 1.1 数据库加解密系统开发背景 3 1.2 国内外现状 3 1.3 本文的主要工作 4 1.4 论文的组织结构 4 第2章 数据库加密的基 ...
- AES 128位CBC加密解密(不使用固定IV)
安全检查时要求账号和密码加密后才能存到数据库中,要求加密算法如下: 1)分组密码算法:AES(密钥长度在128位及以上)(GCM或CBC模式) 2)流密码算法:AES(密钥长度在128位及以上)(OF ...
- 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密
学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA AES RSA AES 混合加密 整合 前言: 为了提高安全性采用了RSA,但 ...
- 基于FPGA平台RISCV架构的SOC应用系统设计1
基于FPGA平台RISCV架构的SOC应用系统设计1 本系列文章是参加第四届"复微杯"全国大学生电子设计大赛 FPGA 赛道的作品,该平台基于 RISCV,要求在 FPGA 平 ...
- 基于FPGA平台RISCV架构的SOC应用系统设计3
基于FPGA平台RISCV架构的SOC应用系统设计3 本系列文章是参加第四届"复微杯"全国大学生电子设计大赛 FPGA 赛道的作品,该平台基于 RISCV,要求在 FPGA 平 ...
- 基于CH375的嵌入式USB文件加解密系统的设计
基于CH375的嵌入式USB文件加解密系统的设计 [日期:2008-7-21] 来源:电子技术应用 作者:华中科技大学 电子与信息工程系, 湖北 武汉 430074 [字体:大 中 小] <s ...
- 基于FPGA的两位按键控制LED数码管加减计数实验
两位按键控制LED数码管加减计数实验 这是一篇拖了一个多月的文章,主要是基于FPGA利用按键消抖原理与动态数码管驱动原理相结合,来实现一个利用两位按键来控制数码管实现0-99的加法计数或者减法计数功能 ...
- 128位java_Java:如何使用CFB和无填充实现128位AES
有人能给我带来这个问题吗? 我需要知道如何使用AES加密和解密,至少使用128位CFB和无填充. 一些代码或链接将非常赞赏. (我已经看过谷歌,但没有幸运的艰难). 更新: 工作正常! public ...
- js aes加密_nodejs中使用Crypto-JS对图片进行加解密
在用nodejs开发后台的时候,为了安全的需要,经常会有加密的需求,对前端传入的图片进行AES加密后存储,然后在前端调用的时候,对图片进行解密,并返回Base64编码格式的图片. Crypto-JS这 ...
- 基于FPGA的DDR3多端口读写存储管理系统设计
机载视频图形显示系统主要实现2D图形的绘制,构成各种飞行参数画面,同时叠加实时的外景视频.由于FPGA具有强大逻辑资源.丰富IP核等优点,基于 FPGA的嵌入式系统架构是机载视频图形显示系统理想的架构 ...
最新文章
- Layui 表格编辑
- 2.11 linux的软防火墙apf安装配置
- 【RecyclerView】 十五、使用 ItemTouchHelper 实现 RecyclerView 拖动排序 ( ItemTouchHelper 简介 )
- python英文文献_python英文文献
- CeneOS中使用Docker安装Gitlab
- python 中map()和lamda的简单实用
- Solaris - 使用TAB键自动补全和显示当前用户与目录
- javascript进制转换_《算法笔记》3.5小节——入门模拟-gt;进制转换
- matlab veristand,matlab和NI VeriStand联合仿真环境搭建(一)
- java strlen,跟妹妹聊到 Java 16 新特征,真香!
- error C2143: 语法错误 : 缺少“;”(在“using”的前面)
- 基于LSTM搭建文本情感分类的深度学习模型:准确率95%
- 利用GDB、KGDB调试应用程序及内核驱动模块
- 达尔豪西大学 计算机科学,西安大略大学和达尔豪西大学哪个好
- 三星i865刷android,三星S11加持黑科技,16GB+骁龙865,手机流畅度超越电脑
- throw 和 throws 的区别
- Nginx的安装和应用(详细介绍)
- 0x80073712_win10系统-更新失败提示“0x80073712”如何解决?
- Oracle 数据库学习
- Dalvik 指令学习
热门文章
- OpenHarmony更新编译问题及解决办法
- 基于51单片机的电子密码锁设计
- Arduino 使用 LCD1602 显示屏IIC驱动
- thinkphp5.1生成错误日志文件以及Evn的使用
- 区域化管理 让多光伏电站运维“1+1>2”
- 学生来看我,我自我满足...........
- Boostnote:适合程序员的笔记软件
- 2022 年牛客多校第五场补题记录
- svchost.exe网速占用解决办法
- 使用antd-design-vue配合vue框架搭建项目使用组件显示英文的解决办法