基于Rijndael算法的研究和应用
2012-04-11张青凤张凤琴
张青凤,张凤琴
(1.运城学院公共计算机教学部,山西运城044000;2.空军工程大学计算机系,陕西西安710071)
2001年美国国家标准技术协会已经将Rijndael算法作为下一代对称密码算法的标准,该算法借鉴了很多Square算法的设计思想。它允许128,192,256位密钥长度,不仅能够在128位分组上工作,也能够在不同的硬件上工作[1-3]。
1 Rijndael算法简介
Rijndael属对称加密,是一种可变数据块长和可变密钥长的迭代分组加密算法,在安全、性能、效率、可实现、灵活等多方面有优点,它被设计成数据块长、密钥长为128/192/256三个可选长度,来加密128bit分组,相应的加密轮数分别为10/12/14,每一轮循环都有一个循环密钥,它来自于初始密钥[4-5]。
2 Rijndael基本术语
2.1 状态
状态由一个4行、Nb列的二维字节数组表示,Nb等于数据块长度除以32,取Nb=4时的状态为:

2.2 分组密钥
Rijindael的消息组a00长度和密钥长度可以是128/192/256比特。为了方便数据的计算和算法的描述,限制密钥长度为128位,128位输入分成16个字节,每字节8位,密码也类似由一个4阶方阵组成,NK等于密码的长度除以32:

2.3 有限域GF(28)
有限域中的元素是按字节计算的,GF(28)的元素代表8比特的字节。例如x7+x6+x3+x+1代表11001011,Rijindael算法选择的多项式为x8+x4+x3+x+1。
2.4 加密轮数Nr
设Nb为一个消息组经上述处理后得到的字的个数,Nk为加密密钥处理后的字的个数。那么Nb=4,6,8;Nk=4,6,8,加密的轮数Nr根据表1由Nb和Nk控制。
3 Rijndael算法的实现
Rijindael算法由10轮、12轮、14轮循环组成,加密过程的每轮循环都有一个循环密钥,每轮循环有4个基本步骤组成:字节转换、移动行变换、混合列变换、加循环密钥。因属对称加密,在加密和解密时都使用相同的密钥。……
