Rijndael加密算法的介绍

作者:林祝兴 叶义雄 杨国鸿

本文针对 Rijndael 加密算法的数学理论背景,算法的架构,回合的转换,金钥的产生,以及各种攻击破密法等等,做了一些简单的介绍。

一、简介

AES ( Advanced Encryption Standard ) 的选拔中,从最初的十五个算法,到十个、五个,逐步筛选出适合用来作为下一代加密算法的标准。 Rijndael 在经过了一番时日的考验之后,也一直名列前矛。直至十月二日, Rijndael 才脱颖而出,这篇文章便是针对 Rijndael 作简要的介绍。

Rijndael 是一个反复运算的加密算法,它允许可变动的数据区块及金钥的长度。数据区块与金钥长度的变动是各自独立的。

Rijndael 算法中定义了几个名词,分述如下:

State :在运算过程中所产生的中间值,是一个 4 × Nb 的矩阵, Nb 可由数据长度除以 32 位求得,也就是把数据分割成 Nb 个区块。

Cipher Key :用来做加密运算的金钥,形式是一个 4 × Nk 的矩阵, Nk 可由金钥长度除以 32 位求得,也就是把金钥分割成 Nk32 位的子金钥。

Rijndael 算法中,运算的回合数 (Nr) 是由 NbNk 所决定的,回合数的变动定义如下表。

 

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 ) 的定义

假设一个字节 bb7 b6 b5 b4 b3 b2 b1 b0 组成,我们可以把这些 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 =(01010111)2 +(10000011)2 = (11010100)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)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值