高级加密标准及加解密算法实现研究
R ijndael 加密解密算法是比利时的JoanDacm en 和V incen t R ijm en 设计的, 分组长可为128 位, 192 位和256 位, 其密钥也可为128 位,192 位和256 位, 但在高级加密标准规范中分组长度只能是128 位[ 1 ]。在2000 年10 月被N IST确认为新一代高级加密标准(A ES) , 它将代替DES。R ijndael 算法可以抵抗现已知的攻击方法, 具有很好的代数结构, 其轮变换(包含字节替换、行循环移位、列混淆和密钥加变换) 可以用简洁的代数方程表示。该算法灵活性强、软件和硬件对计算环境的适应性强、易于实现, 该算法性能稳定, 即使在受限环境(如智能卡) 下也具备良好的性能。
R ijndael 算法基础
R ijndael 算法采用GF (28 ) 域的加法及乘法运算, GF (28) 域用到的系数在GF (2) 域中为不可化约多项式(本原多项式) : m (x ) = x 8+ x 4+ x 3+x + 1。在该算法中1 B , 8 b: b= b7b6b5b4b3b2b1b0 对应于多项式: b7x 7+ b6x 6+ b5x 5+ b4x 4+ b3x 3+ b2x 2+ b1x + b0, 同时该算法中没有2 个变量的乘法,只有1 个变量与1 个常量的乘法。其中特别常量02 与1 个变量的乘法可以通过移位运算和条件异或运算来实现, 如b×{02}= b6b5b4b3b2b1b0b7Ý(b7? 0x 1B : 0)。式中: Ý 为异或运算。而任一个大于02 的常量都可转化为乘以02 的运算, 例如b×{0x 15}= b× (01Ý 04Ý 10) = b× (01Ý 022Ý024) ,“{}”中的值为十六进制。
2 R ijndael 算法描述
该算法含有加密、解密和密钥扩展3 个模块。密钥扩展是对输入的主密钥进行迭代以产生各轮变换所需的轮密钥。加密算法是把输入的明文和密钥经N r+ 1 (N r 与分组长度和密钥长度有关,常取10, 12 或14) 轮变换后输出所得密文, 解密算法与加密算法原理相似且是互逆的。输入的明文分组称为状态, 是一个有4 行N b (N b 是分组长度除以32 所得的商, 分别为4, 6, 8) 列的二维数组, 数据在状态中是按列的顺序排列的[ 223 ]。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !