加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[原创]AES加密中列混合的具体算法

(2012-03-03 10:41:43)
标签:

加密

杂谈

 AES明文在加密过程中涉及到字节代换、行移位、列混合、轮密钥加等过程。这里对列混合的算法做出一些浅显的解释。
列混合其实就是对一个状态的每一列去乘一个矩阵,其中乘法是在有限域GF(2^8)内进行的,不可约多项式为x^8+x^4+x^2+x+1如图:
http://pic002.cnblogs.com/images/2010/169108/2010103102021588.png

先把算法代码列出来:


这里重点是有限域GF(2^8)上的乘法。烈火采用的算法的原理如下:
1、  GF(2^8)中任何数乘0x01都不变
2、  GF(2^8)中计算乘0x02,可以分两种情况考虑:
(1)、原数值小于(1000 0000)2,即0x80的时候,乘2后第8个比特不会溢出,那么结果就是原数值左移一位;
(2)、原数值大于(1000 0000)2,即0x80的时候,乘2后第8个比特会溢出,结果需要减去一个不可约多项式(x8+x4+x2+x+1),注意到GF(2^8)中的减法就是加法,那么结果就为原数值左移一位后(乘2)再与(0001 1011)2即0x1b进行异或(这里x8已经减掉了,只需要再减去x4+x2+x+1)。
3http://www.pudncom.com/、类似第2点,可以得到GF(2^8)中计算乘4、乘8的结果;
4、GF(2^8)中计算乘其它数时,可以表示为乘1、2、4、8的线性组合。

根据以上几点再对有限域GF(2^8)上的乘法源代码进行解释:

 

[热文]第一次笔试金山

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有