当前位置: 首页 > news >正文

基于FPGA的AES加解密系统verilog实现,包含testbench和开发板硬件测试

目录

1.课题概述

2.系统测试效果

3.核心程序与模型

4.系统原理简介

4.1 字节替换(SubBytes)

4.2 行移位(ShiftRows)

4.3 列混合(MixColumns)

4.4 轮密钥加(AddRoundKey)

4.5 逆字节替换(InvSubBytes)

4.6 逆行移位(InvShiftRows)

4.7 逆列混合(InvMixColumns)

4.8 轮密钥加(AddRoundKey)

5.完整工程文件


1.课题概述

       基于FPGA的AES加解密系统verilog实现,包含testbench和开发板硬件测试。输入待加密数据,密钥,输出加密数据,然后通过解密模块输出解密后的原数据。

2.系统测试效果

仿真测试

硬件测试

在实际测试过程中,如果你的开发板和我的不一样,可以参考本博客置顶文章进行硬件配置修改:

FPGA系统开发板调试过程不同芯片的移植步骤介绍_紫光fpga移植软核的步骤-CSDN博客

通过这个链接的步骤,可以实现不同开发板上的系统调试。

3.核心程序与模型

版本:vivado2022.2

`timescale 1ns / 1psmodule tops_hw(
input             i_clk,
input             i_rst,
output            led);reg[15:0]cnt;
always @(posedge i_clk or negedge i_rst)
beginif(~i_rst)begincnt<=16'd0;end elsebeginif(cnt==16'd60000)cnt<=16'd1;elsecnt<=cnt+16'd1;end
endreg       start;
reg[127:0]key;
reg[127:0]text_in; always @(posedge i_clk or negedge i_rst)
beginif(~i_rst)beginstart   <=1'd0;key     <=128'd0;text_in <=128'd0;end elsebeginif(cnt==16'd1 | cnt==16'd20001 | cnt==16'd40001)start   <=1'd1;elsestart   <=1'd0;if(cnt==16'd1)begintext_in <= 128'h0123_4567_89ab_cdef_0123_4567_89ab_cdef;key     <= 128'h0000_0000_0000_0000_1111_0000_0000_0000;endif(cnt==16'd20001)begintext_in <= 128'h0123_4567_0000_cdef_0123_4567_89ab_cdef;key     <= 128'h0000_0000_1111_0000_1111_0000_0000_0000;endif(cnt==16'd40001)begintext_in <= 128'h0123_4560_0000_c11f_0123_4567_89ab_cdef;key     <= 128'h0000_0000_1111_0000_1111_0000_0111_0000;endend
endwire           done;
wire	[127:0]	text_out;
wire           done2;
wire	[127:0]	text_out2;aes_tops aes_tops_jiam(.Clock       (i_clk),.Reset       (~i_rst),.loads       (start),.enc_dec     (1'b0),.din         (text_in),.FEK         (key),.Ready       (),.dout        (),.Ready_Valid (done),.douts_Valid (text_out));aes_tops aes_tops_jiem(.Clock       (i_clk),.Reset       (~i_rst),.loads       (done),.enc_dec     (1'b1),.din         (text_out),.FEK         (key),.Ready       (),.dout        (),.Ready_Valid (done2),.douts_Valid (text_out2));assign led= done2;ila_0 your_instance_name (.clk(i_clk), // input wire clk.probe0({start,text_in,key,done,text_out,done2,text_out2}) // input wire [519:0] probe0
);endmodule
00X6_002m

4.系统原理简介

       AES是一种分组密码算法,它将明文数据分成固定大小的分组(通常为 128 位),并使用一个密钥对这些分组进行加密。AES支持的密钥长度有128位、192位和256位,不同的密钥长度对应不同的加密轮数,分别为10轮、12轮和14轮。

       AES加密过程主要包括初始轮、多轮迭代和最终轮。每一轮迭代都包含四个基本操作:字节替换(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)和轮密钥加(AddRoundKey)。

4.1 字节替换(SubBytes)

      字节替换操作是一个非线性替换操作,它将状态矩阵中的每个字节通过一个固定的S盒进行替换。S 盒是一个16×16的字节替换表,它是通过有限域GF (2^8)上的逆运算和仿射变换得到的。数学公式为:

4.2 行移位(ShiftRows)

       行移位操作将状态矩阵的每一行循环左移不同的位数。第一行保持不变,第二行左移1个字节,第三行左移2个字节,第四行左移3个字节。数学公式为:

4.3 列混合(MixColumns)

       列混合操作是一个线性变换,它将状态矩阵的每一列与一个固定的矩阵进行矩阵乘法运算。这个固定矩阵是在有限域GF (2^8)上定义的。数学公式为:

4.4 轮密钥加(AddRoundKey)

轮密钥加操作将状态矩阵与当前轮的轮密钥进行逐位异或运算。数学公式为:

        AES解密过程是加密过程的逆过程,它包括初始轮、多轮迭代和最终轮。每一轮迭代包含逆字节替换(InvSubBytes)、逆行移位(InvShiftRows)、逆列混合(InvMixColumns)和轮密钥加(AddRoundKey)。

4.5 逆字节替换(InvSubBytes)

逆字节替换操作是字节替换操作的逆操作,它使用逆S盒进行替换。数学公式为:

4.6 逆行移位(InvShiftRows)

逆行移位操作是行移位操作的逆操作,它将状态矩阵的每一行循环右移不同的位数。数学公式为:

4.7 逆列混合(InvMixColumns)

      逆列混合操作是列混合操作的逆操作,它将状态矩阵的每一列与一个固定的逆矩阵进行矩阵乘法运算。数学公式为:

4.8 轮密钥加(AddRoundKey)

轮密钥加操作与加密过程中的轮密钥加操作相同,都是逐位异或运算。

5.完整工程文件

v

v

http://www.xdnf.cn/news/7093.html

相关文章:

  • 4.Rust+Axum Tower 中间件实战:从集成到自定义
  • 【Leetcode 每日一题】2364. 统计坏数对的数目
  • 再读bert(Bidirectional Encoder Representations from Transformers)
  • 学习设计模式《二》——外观模式
  • 京东物流基于Flink StarRocks的湖仓建设实践
  • UI 在教育产品涉及的领域
  • 如何评价2025 mathorcup妈妈杯数学建模竞赛?完整建模过程+完整代码论文全解全析来了
  • 2025年MathorCup数学应用挑战赛D题问题一求解与整体思路分析
  • Android 12.0 framework实现对系统语言切换的功能实现
  • 硬盘变废为宝!西部数据携微软等启动稀土回收 效率可达90%
  • SQL预编译——预编译真的能完美防御SQL注入吗
  • 关于hadoop和yarn的问题
  • 基于Flask的AI工具聚合平台技术解析
  • TypeScript 从入门到精通:完整教程与实战应用(二)
  • stl 容器 – map
  • 校平机:精密制造的“材料雕刻家“
  • MQTTClient.c中的协议解析与报文处理机制
  • SpringBoot运维问题
  • FreeRTOS任务通知
  • 51单片机实验五:A/D和D/A转换
  • 前端:uniapp框架中<scroll-view>r如何控制元素进行局部滚动
  • ASP.NET MVC 实现增删改查(CRUD)操作的完整示例
  • 从代码学习深度学习 - 小批量随机梯度下降 PyTorch 版
  • Spring Boot启动流程深度解析:从main()到应用就绪的完整旅程
  • Starrocks 数据均衡DiskAndTabletLoadReBalancer的实现
  • 使用Lean 4和C#进行数学定理证明与逻辑推理
  • RAG 实战|用 StarRocks + DeepSeek 构建智能问答与企业知识库
  • edge browser for linux debian
  • 23种设计模式-创建型模式之建造者模式(Java版本)
  • AWS上构建基于自然语言的数值和符号计算系统