主权项 |
一种基于FPGA的超高速AES处理器实现方法,包括如下步骤:(1)初始化数据表依据字节替换表、逆字节替换表和加密模块的扩展密钥寄存器的数据,计算查找列向量表、查找逆列向量表以及解密模块的扩展密钥寄存器中的数据;所述查找列向量表的数据按照以下步骤获得:第一步,将查找列向量表中数据的计算次数设定为1;第二步,从字节替换表中读出与计算次数对应的数据,将读出的数据分别与[02,01,01,03]T、[03,02,01,01]T、[01,03,02,01]T、[01,01,03,02]T相乘获得四个数据,再将获得的四个数据分别存储到查找列向量表1、查找列向量表2、查找列向量表3、查找列向量表4中与计算次数对应的存储空间;第三步,判断查找列向量表中数据的计算次数是否等于256,如果是,则完成了四个查找列向量表数据的计算;否则,计算次数加1,执行第二步;所述查找逆列向量表的数据按照以下步骤获得:第一步,将逆列向量表中数据的计算次数设定为1;第二步,从逆字节替换表中读出与计算次数对应的数据,将读出的数据分别与[0E,09,0D,0B]T、[0B,0E,09,0D]T、[0D,0B,0E,09]T、[09,0D,0B,0E]T相乘获得四个数据,再将获得的四个数据分别存储到查找逆列向量表1、查找逆列向量表2、查找逆列向量表3、查找逆列向量表4与计算次数对应的存储空间;第三步,判断查找逆列向量表中数据的计算次数是否等于256,如果是,则完成了四个查找逆列向量表数据的计算;否则,计算次数加1,执行第二步;所述解密模块的扩展密钥寄存器中的数据按照以下步骤获得:第一步,将解密模块的扩展密钥寄存器数据的计算次数设定为2;第二步,从加密模块的与计算次数对应的扩展密钥寄存器中读出数据,将读出的数据与逆混合线性变换矩阵相乘获得1个128比特的数据,再将获得的数据存储到解密模块中与计算次数对应的扩展密钥寄存器;第三步,判断解密模块的扩展密钥寄存器数据的计算次数是否等于10,如果是,执行第四步;否则,计算次数加1,执行第二步;第四步,从加密模块的第1个、第11个扩展密钥寄存器中读出数据,将读出的数据直接分别存储到解密模块的第1个、第11个扩展密钥寄存器;(2)初始设置用户根据处理数据的速率计算出系统工作的时钟频率,把这个频率的时钟连接到处理器的时钟端口,给系统一个复位信号使得处理器处于复位状态;(3)接收数据将拟加解密的输入数据序列暂存到接口存储区缓冲模块,在控制模块的控制下,第一轮运算单元接收接口存储区缓冲模块输出的数据序列;将加解密模块的运算次数设定为1,完成初始化操作;(4)读取数据在控制模块的控制下,将加密模块中与运算次数对应的扩展密钥寄存器数据和解密模块中与运算次数对应的扩展密钥寄存器数据读出来;(5)选择数据的处理方式5a)判断运算次数是否等于1,如果是,执行步骤5b)的操作,否则,执行步骤5c)的操作;5b)从加密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与接口存储区缓冲模块输出的数据同时送给与运算次数对应的运算单元,获得加密模块中与运算次数对应的运算结果;从解密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与接口存储区缓冲模块输出的数据同时送给与运算次数对应的运算单元,获得加密模块中与运算次数对应的运算结果;5c)从加密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与与运算次数对应的查找列向量表输出的数据同时送给与运算次数对应的运算单元,获得加密模块中与运算次数对应的运算的结果;从解密模块中读出与运算次数对应的扩展密钥寄存器数据,将读出的数据与与运算次数对应的查找逆列向量表输出的数据同时送给与运算次数对应的运算单元,得到解密模块中与运算次数对应的运算的结果;(6)判断加解密是否完成判断运算次数是否等于11,如果是,则完成加解密数据,执行步骤(7)的操作;否则,未完成加解密数据,运算次数加1,执行步骤(4)的操作;(7)输出结果输出模块接收来自加解密模块运算的结果,在控制模块的控制下,选择输出加密结果或者解密结果。 |