Rijndael加密算法的介绍2.doc

  1. 1、本文档共10页,可阅读全部内容。
  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文档。上传文档
查看更多
Rijndael加密算法的介绍2.doc

Rijndael加密算法的介绍 ?作者:林祝兴 叶义雄 杨国鸿 本文针对Rijndael加密算法的数学理论背景,算法的架构,回合的转换,金钥的产生,以及各种攻击破密法等等,做了一些简单的介绍。 一、简介 在AES ( Advanced Encryption Standard ) 的选拔中,从最初的十五个算法,到十个、五个,逐步筛选出适合用来作为下一代加密算法的标准。Rijndael在经过了一番时日的考验之后,也一直名列前矛。直至十月二日,Rijndael才脱颖而出,这篇文章便是针对Rijndael作简要的介绍。 Rijndael是一个反复运算的加密算法,它允许可变动的数据区块及金钥的长度。数据区块与金钥长度的变动是各自独立的。 在Rijndael算法中定义了几个名词,分述如下: State:在运算过程中所产生的中间值,是一个4×Nb的矩阵,Nb可由数据长度除以32位求得,也就是把数据分割成Nb个区块。 Cipher Key:用来做加密运算的金钥,形式是一个4×Nk的矩阵,Nk可由金钥长度除以32位求得,也就是把金钥分割成Nk个32位的子金钥。 在Rijndael算法中,运算的回合数(Nr)是由Nb及Nk所决定的,回合数的变动定义如下表。 ? Nr Nb=4 Nb=6 Nb=8 Nk=4 10 12 14 Nk=6 12 12 14 Nk=8 14 14 14 二、Rijndael的数学背景 在Rijndael中使用了许多字节层级的运算,而这些运算是以GF(28)为基础架构。也有一些采用了4-byte的字组运算。在这部分,我们将介绍这些基本的数学原理。 (1)?????? GF(28)的定义 假设一个字节b由b7b6b5b4b3b2b1b0组成,我们可以把这些bi想象成一个7次多项式的系数,而这些系数不是0就是1: b7 x7+ b6 x6+ b5 x5+ b4 x4+ b3 x3+ b2 x2+ b1 x + b0, 例如,(57)16的二进制表示法为(0101,0111)2表示成多项式,则为: x6+ x4+ x2+ x + 1 . (2)?????? 加法 两个多项式的加法,则是定义为相同指数项的系数和再模余2,简单的说就是作EXOR运算(i.e., 1+1=0)。例如: (57)16+(83)16=2+2 = 2 = (D4)16 ?????? 或是(x6+x4+x2+x+1) + (x7+x+1) = x7+x6+x4+x2 (3)?????? 乘法 在乘法里面,多项式相乘之后的结果很容易造成溢位的问题,解决溢位的方式是把相乘的结果,再模余一个不可分解的多项式m(x)。在Rijndael中,定义一个这样子的多项式为 m(x)=x8+x4+x3+x+1或是(11B)16 例如: (57)16(83)16 = ( x6+ x4+ x2+ x + 1)? ( x7+ x + 1) = x13+ x11+ x9+ x8+ x7+x7+ x5+ x3+ x2+x+x6+ x4+ x2+ x + 1 = (x13+ x11+ x9+ x8+ x6+ x5+ x4+ x3+ 1+x13+ x11+ x9+ x8+ x6+ x5+ x4+ x3+ 1) modulo (x8+ x4+ x3+ x + 1) = x7+ x6+ 1=(C1)16 (4)?????? 乘以x 若把b(x)乘上x,得到b7 x8+ b6 x7+ b5 x6+ b4 x5+ b3 x4+ b2 x3+ b1 x2 + b0x。若b7=0,不会发生溢位问题,答案即是正确的;若b7=1,发生溢位问题,必须减去m(x)。我们可以把这种运算表示为xtime(x),其运算方式为left shift(若溢位则和(1B)16做EXOR运算),例如:‘57’ · ‘13’ = ‘FE’ ‘57’ · ‘02’ = xtime(57) = ‘AE’ ‘57’ · ‘04’ = xtime(AE) = ‘47’ ‘57’ · ‘08’ = xtime(47) = ‘8E’ ‘57’ · ‘10’ = xtime(8E) = ‘07’ ‘57’ · ‘13’ = ‘57’ · (‘01’⊕‘02’⊕‘10’) = ‘57’ ⊕ ‘AE’ ⊕ ‘07’ = ‘FE’ ? 三、Rijndael的加密架构 Rijndael加密算法是由一个initial Round Key addition,Nr-1个回合运算,及一个final round所组成。加密过程以C语言伪码叙述如下: Rijndael(State, CipherKey) //state表示输入的数据明文, //CipherKey表示使用的加密金钥, //Ex

您可能关注的文档

文档评论(0)

smxxcy + 关注
内容提供者

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

1亿VIP精品文档

相关文档