AES算法原理及实现.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AES算法原理及实现

AES算法及实现 1,AES背景 AES是美国国家标准技术研究所NIST旨在取代DES的新一代的加密标准。NIST对AES候选算法基本要求是:对称分组密码体制;密钥长度支持128,192,256位;明文分组长度128位;算法应易于各种硬件和软件实现。1998年NIST开始AES第一轮征集、分析、测试、共产生了15个候选算法。1999年8月NIST公布了五种算法(MARS,RC6,Rijindael,Serpent,Twofish)成为候选算法。最后Rijndarl,这个由比利时人设计的算法与其它候选算法在成为高级加密标准(AES)的竞争中取得成功,于2000年10月被NIST宣布成为取代DES的新一代的数据加密标准即AES。尽管人们对AES还有不同的看法,但总体来说Rijndael作为新一代的数据加密标准汇聚了强安全性、高性能、高效率、易用和灵活等优点。AES设计有三个密钥长度:128,192,256 比特,相对而言,AES的128比特密钥比DES的56比特密钥强1021倍。 2,AES加密、解密算法原理概述 对称密码算法根据对明文消息加密方式不同科分为两大类,即分组密码和流密码。分组密码将消息分为固定长度的分组,输出的密文分组通常与输入的明文分组长度相同。AES算法属于分组密码算法,它的输入分组、输出分组以及K为128,192,或256比特。用Nk=4,6,8代表密钥串的字数(1字=32比特)用Nr表示对一个数据分组加密的论数,每一轮读需要一个和输入分组具有相同长度(128比特)的扩展密钥Ke的参与。由于外部输入的加密密钥K长度有限,所以在AES中要用一个密钥扩展程序把外部密钥K在扩展成更长的比特串,以生成各轮的加密密钥。 2.1,密钥 密钥(Key)是密码算法中参与运算的数值(或者数值集)。对报文进行加密,我们需要一个加密算法、一个加密密钥以及明文,并由此产生密文。对报文进行解密,我们需要一个解密算法、一个解密密钥以及密文,并由此复原原始的明文。 2.2加密变换 AES的加密和解密框图如图1所示。 加密变换 设X施AES的128比特明文输入,Y是128比特的密文输出,则AES的密文Y可以用下面的复合变换表示:Y=A k(r+1) R S Akr C R S A k(r1)…… C R S Ak1(X) 其中“”表示复合运算。这里Ak1 表示对X的一个变换Aki (X)=X ⊕KI(KI为第i轮的子密钥,为比特串的异或运算)。S:S盒置换。即对每一个字节用S-Box做一个置换。S-Box是一个给定的转换表。R:行置换。C:列置换。S’(x)=a(x)S(X) 这里是特殊的乘法运算,将在下面仔细介绍。 图1 解密变换 解密变换是加密变换的逆转换。 3, AES加密/解密算法的实现 3.1 分组加密 表1是三种不同类型的AES加密密钥组大小与相应的加密轮数对照表。 加密开始时,输入分组的各字节按表2的方式装入一个矩阵State中。如输入ACBDEFGHIJKLMONE则输入块影射到如表2的状态矩阵State中。 AES类型密钥长度分组大小加密轮数AEIM AES-1284字节4字10BFJOAES1926字节4字12CGKNAES2568字节4字14DHLE 表1 表2 加密过程主程序由下面的伪代码描述。其中子程序Subytes(),ShiftRows(),MixColumms()和AddRounKey(),密钥扩展程序将在下面介绍。 3.2 S盒变换(Subyte) 对输入矩阵的任何一个元素A 做如下变换S[A]: 一个元素A从存储角度看都是一个八位的二进制数。算出前四位所代表的十六进制数x和后四位所代表的十六进制数y。如A x=c, y=4 从AES算法给定的S-Box(16行16列其中每个元素为一个字节具体的S-Box略)中找出S[A]=S[x,y]的值。如A,S[A]=S[x,y]=S[c,4]={1c}。或直接通过下面的公式将A=b7b6b5b4b3b2b1b0变为S[A]=b ’7b’6b’5b’4b’3b’2b’1b’0b’=b′i=bib(i+4)mod8b(i+5)mod8b(i+6)mod8b(i+6)mod8⊕Ci 这里c=(c0,c1,c2,c3,c4,c5,c6,c7)=(0,1,1,0,0,0,1,1)。 3.12

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档