用C 语言描述AES256 加密算法.doc

用C 语言描述AES256 加密算法.doc

ID:28110882

大小:441.00 KB

页数:14页

时间:2018-12-08

用C 语言描述AES256 加密算法.doc_第1页
用C 语言描述AES256 加密算法.doc_第2页
用C 语言描述AES256 加密算法.doc_第3页
用C 语言描述AES256 加密算法.doc_第4页
用C 语言描述AES256 加密算法.doc_第5页
资源描述:

《用C 语言描述AES256 加密算法.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、用C语言描述AES256加密算法  用C语言描述AES256加密算法,然后在硬件中加速性能。  高级加密标准(AES)已经成为很多应用(诸如嵌入式系统中的应用等)中日渐流行的密码规范。自从2002年美国国家标准技术研究所(NIST)将此规范选为标准规范以来,处理器、微控制器、FPGA和SoC应用的开发人员就开始利用AES来保护输入、输出及保存在系统中的数据。我们可在更高抽象层上非常高效地描述算法,就像用于传统软件开发中那样;但由于涉及到的操作,该算法在FPGA中实现起来最为高效。开发人员甚至可在布线中“免费”获得一些操作。  基于这些原因,AES是个绝佳的例子,即开发人员可利用

2、C语言描述算法,然后在硬件中加速实现,从而受益于赛灵思SDSoC?开发环境。本文中我们就是要这样做,首先熟悉一下AES算法,然后在赛灵思Zynq?-7000AllProgrammableSoC的处理系统(PS)上实现AES256(256位秘钥长度)以建立软件性能基准,然后再在片上可编程逻辑(PL)中进行加速。为了完全了解可获得的优势,我们将在SDSoC环境所支持的全部三个操作系统中执行这几个步骤,三个操作系统为:Linux、FreeRTOS和裸机。    算法AES属于对称块密码,可采用128、192和256位不同的秘钥长度。秘钥长度决定加密或解密数据所需的处理步骤数。顾名思义

3、,块密码算法采用的是数据块。AES算法一次处理16字节的固定模块。因此,如果我们密码内容少于16字节,就必须将未使用的字节进行填充。  由于AES是对称密码,信息加密和解密都采用相同的做法和秘钥。相反,非对称算法(例如RSA)则使用不同秘钥进行数据加密和解密。  AES算法中四个阶段中每个阶段都代表一个状态。四个AES阶段的组合称为一个循环。所需循环的数量取决于秘钥长度。  很简单,AES状态起始于我们要加密的16个字节。每个新步骤都会对状态进行更新。处理状态之前,我们需要将输入字节串变为初始状态,即4x4矩阵(图1)。    图1—16字节的初始状态转换为4x4矩阵  现在,

4、我们将最初的16个字节重新编排为4x4矩阵形式的初始状态,便可研究每个步骤如何操纵它的输入状态。  轮密钥加(AddRoundKey):这是唯一使用加密秘钥的步骤。我们已经注意到,所需的加密算法循环的数量取决于秘钥长度(128、192或256位)。必须对加密秘钥进行秘钥扩展,以确保在每个循环中不会重新使用秘钥中的字节。果然,对于不同的秘钥长度而言扩展秘钥长度并不相同。扩展秘钥长度为:扩展秘钥长度(字节)=16*(循环+1)  这个步骤中的操作很简单。输入状态字节与扩展秘钥的16个字节进行异或运算。每个循环使用扩展秘钥的不同部分;循环0使用字节0至15,循环1使用字节16至31,

5、以此类推。对于每个循环,状态的字节1与扩展秘钥的最低有效字节进行异或运算,字节2与“最低有效字节+1”进行异或运算,以此类推。  字节替换(SubBytes):该步骤利用字节替换将状态值用另一个值替换出去。替换盒中的值是预先设定的,而且输入位于输出位之间的关联较小。替换盒(S-box)是一个16x16矩阵。我们使用被替代字节的高四位和低四位作为替代表格中的索引。例如,使用图2中的S-box加密,如果第一个初始状态字节为0x69,那么用替代值0xF9代替。状态字节的高四位选择替代表格的行;低四位选择列。注意在图2中,加密和解密使用不同的替换盒,而且盒中内容不同。    图2—AE

6、SS-box内容  行位移变换(ShiftRows):该步骤对每行执行循环字节移位,以重新排列输入状态矩阵。我们将每行右旋不同个因数(图3)。第1行不变。将第2行移动1个字节,第3行移动2个字节,第4行移动3个字节。解密时执行相同操作,但向左旋转而非向右。    图3—行位移变换(ShiftRows)操作  列混合变换(MixColumns):这是循环中最复杂的步骤,需要进行16次乘法和12次异或运算。逐列对输入状态矩阵进行此操作,将输入状态矩阵与固定矩阵相乘以获得新的状态列(图4)。列中的每项与矩阵中的一行相乘。将每次乘法结果进行异或运算,以获得新的状态值。第一个要进行相乘运

7、算的列和行在图4中加亮显示。    图4—用于加密和解密的列混合变换(MixColumns)函数  以下是第一列的列混合变换(MixColumns)方程:B1’=(B1*2)XOR(B2*3)XOR(B3*1)XOR(B4*1)B2’=(B1*1)XOR(B2*2)XOR(B3*3)XOR(B4*1)B3’=(B1*1)XOR(B2*1)XOR(B3*2)XOR(B4*3)B4’=(B1*3)XOR(B2*1)XOR(B3*1)XOR(B4*2)  然后,为输入状态中的下一个列采用相同乘法矩

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。