您的位置:首页 > 房产 > 建筑 > 国家企业信用信息官网_网站建设制作公司哪家_itme收录优美图片官网_企业管理咨询

国家企业信用信息官网_网站建设制作公司哪家_itme收录优美图片官网_企业管理咨询

2025/4/24 10:32:59 来源:https://blog.csdn.net/hardware_player/article/details/147340029  浏览:    关键词:国家企业信用信息官网_网站建设制作公司哪家_itme收录优美图片官网_企业管理咨询
国家企业信用信息官网_网站建设制作公司哪家_itme收录优美图片官网_企业管理咨询

目录

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com