基于FPGA的AES256加密算法实现

1.AES256算法介绍

AES256算法为最常见的对称加密算法,对称加密算法也就是加密和解密用相同的密钥,具体的加解密流程如下图。
在这里插入图片描述
其中,明文P是指没有经过加密的数据,数据长度128bit;密钥K是用来加密明文或解密密文的密码,在对称加密算法中,加密与解密的密钥是相同的,长度为256bit;密文C为经加密函数处理后的数据,数据长度128bit;AES256加解密函数为明文与密文之间换算的算法。

2.AES256算法流程

AES256算法并不是一次性将明文转变为密文的算法,而是经过许多轮的计算得到的,共需要14轮计算,除去初始轮和最终轮其余普通轮计算加密过程均要涉及到4种操作,分别是字节替代、行移位、列混淆和轮密钥加。解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。加解密中每轮的密钥分别由初始密钥扩展得到。算法中16个字节的明文、密文和轮密钥都以一个4x4的矩阵表示。

由于AES256算法加密解密均需要进行14轮的计算,因此在开始执行算法前需要将初始密钥K进行密钥扩展生成14轮计算所需的子密钥。

2.1密钥扩展

子密钥的生成是以列为单位进行的,一列是32Bit,四列组成子密钥共128Bit。生成子密钥的数量比AES算法的轮数多一个,因此AES256算法共计14轮,子密钥为W[0,3]、W[4,7]…W[52,55]、W[56,59]。

2.2字节替代

字节替代的主要功能就是让输入的数据通过S盒表完成从一个字节到另一个字节的映射。加密时字节替换用S盒,逆S盒与S盒对应,用于解密时对数据处理,解密时的程序处理称作逆字节代换。
S盒表:

在这里插入图片描述
逆S盒表:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值