- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
应用密码学第5讲课件.ppt
应用密码学第五讲 AES算法 复习 DES算法 分组长度 密钥长度 f函数 S盒 轮变换 密钥调度 本节内容 AES (高级数据加密标准) 算法描述 密码分析 RC6算法(自学) RC5算法描述 RC6算法描述 AES算法 1997年9月12日,为了替代即将退役的DES,美国国家标准与技术研究所(NIST)在《联邦纪事》上发表了征集AES算法的公告。1999年3月22日,公布了5个候选算法:MARS, RC6, Rijndael, SERPENT, Twofish。2000年10月2日,由比利时密码学家Joan Daemen和Vincent Rijmen提交的Rijndael算法被确定为AES。以下称Rijndael算法为AES算法。2001年11月26日被采纳为一个标准。 AES算法描述 Rijndael分组加密算法的前身是Square分组加密算法,轮变换结构与其基本相同。为了应征AES候选算法,对Square分组加密算法进行了改进。由原来的密钥和分组长均为128比特改为分组和密钥长均可变,可以满足不同的加密需求。 具体参数如下: ①分组长度、密钥长度和加密层数均可变。 ②分组长度和密钥长度支持128、192、256比特。 ③分组和密钥长度可以独立改变,并由此决定加密层数。 为了后面论述方便,进行如下定义: (一) 设计准则 Rijndael加密算法按照如下原则进行设计: ⒈抗所有已知的攻击 ⒉在多个平台上速度要快和编码紧凑 ⒊设计简单 (二) 状态、密钥与轮数 定义:状态(State):中间密码结果称为状态 Nb = 明文分组的4-字节字数(32比特) Nk = 密钥的4-字节字数(32比特) Nr = 加密的轮数 明文分组(密钥)长度为128比特时,Nb=Nk = 4 明文分组(密钥)长度为196比特时,Nb=Nk = 6 明文分组(密钥)长度为256比特时,Nb=Nk = 8 现以Nb= 6和Nk=4为例进行图示说明。 分组长度、密钥长度都可以在128bit、192比特和256比特间变化,但是不同的组合需要不同的加密轮数。 分组长度与轮数的关系: AES的总体描述: ①给定一个明文x,将State初始化为x,并进行AddRoundKey操作,将RoundKey与State异或。 ②对前Nr-1轮中的每一轮,用S盒进行一次代换操作,称为SubBytes;对State作一个置换ShiftRows,再对State作一次操作MixColumns,然后进行RoundKey操作。 ③依次进行SubBytes,ShiftRows和AddRoundKey操作。 ④将State定义为明文。 加密开始时,首先将State定义明文字节x0,x1,…x15 SuBytes算法 External FieldInv, BinaryToField, FieldToBinary z ?BinaryToField(a7a6a5a4a3a2a1a0) if z?0 then z ? FieldInv(z) (a7a6a5a4a3a2a1a0) ? FieldToBinary(z) (c7c6c5c4c3c2c1c0) ? //在下面的循环中,所有下标都要经过模8约简 for i ? 0 to 7 do bi ? (ai+ai+4+ai+5+ai+6+ai+7+ci) mod 2 return (b7b6b5b4b3b2b1b0) FieldInv:表示求一个域元素的乘法逆 BinaryToField:把一个字节变成一个域元素 FieldToBinary:把一个域元素变成一个字节 下面我们计算 b0=a0+a4+a5+a6+a7+c0 mod 2 =0+0+0+1+1+1 mod 2 =1 b1=a1+a5+a6+a7+a0+c1 mod 2 =1+0+1+1+0+1 mod 2 =0 …. 结果是: (b7b6b5b4b3b2b1b0)= 以16进制表示就是ED。 上面的结果可以通过查S盒代换表来验证。行号5,列号3,对应ED。 行变换 第0行保持不变,第1~3行分别右循环移动移动C1~C3字节。 其中C1~C3的大小与Nb大小有
文档评论(0)