AES加解密算法verilog实现
1、Key
加密和解密用到的key是同一个,key总共有三种
Key128
Key的长度为128bit,需要计算10轮,包含本身1轮,key扩展为11轮128bit的key数据;
Key192
Key的长度为192bit,需要计算12轮,包含本身1轮,key扩展为13轮128bit的key数据;
Key256
Key的长度为256bit,需要计算14轮,包含本身1轮,key扩展为15轮128bit的key数据;
轮密钥生成公式:

2、S盒
S盒为字节替换矩阵,共256个字节查找表;加密和解密的S盒查找表不一样;
3、AES加密运算核
明文以128bit为单位,针对3种key,分别计算11轮、13轮、15轮运算,把最后一轮运算结果输出即为密文;大概18个时钟周期出1个计算结果;
4、AES解密运算核
密文以128bit为单位,针对3种key,分别进行逆运算,把最后一轮运算结果输出即为明文;大概18个时钟周期出1个计算结果;
5、五种加解密模式
ECB(电子密码本模式)

CBC(密码块链接模式)

CFB(密文反馈模式)

OFB(输出反馈模式)

CTR(计算器模式)

6、ECB加解密模式验证
ECB加密验证
Key128 = 0
明文P = text_in = 128‘hf34481ec3cc627bacd5dc3fb08f273e6

得到的密文C = text_out = 128'h0336763e966d92595a567cc9ce537f5e
ECB解密验证
Key128 = 0
密文C = text_out = 128'h0336763e966d92595a567cc9ce537f5e

得到的明文P = text_in = 128‘hf34481ec3cc627bacd5dc3fb08f273e6
7、支持的特性
兼容key128 192 256,兼容五种加解密模式,支持S盒参数化替换;
8、后记
大家如果有这方面的技术问题,欢迎私信与我交流和探讨;
更多推荐
所有评论(0)