
分组密码
Yuixz
这个作者很懒,什么都没留下…
展开
-
AES加密算法之行移位变换
行移位变换完成基于行的循环移位操作,变换方法为:第0行不变,第1行循环左移1个字节,第2行循环左移两个字节,第3行循环左移3个字节。如下图所示。附上自己敲的C语言源码:#include using namespace std;void PrintfMatrix(unsigned char m[4][4]){ for(int i=0;i<4;i++) { for(in原创 2015-11-04 11:01:49 · 6940 阅读 · 0 评论 -
AES加密算法之轮密钥加操作
以AES算法明文128bit、密钥128bit为例:轮密钥加操作就是将轮密钥与明文(状态)按比特异或。轮密钥通过密钥扩展得到,初始密钥与初始明文均是用户自己设置。简单来说,密钥加操作就是逐字节相加,有限域GF(28)上的加法是模2加法,即异或。附上自己敲的C语言源码:#include using namespace std;void PrintfMatrix(unsign原创 2015-11-06 15:48:31 · 18907 阅读 · 0 评论 -
AES加密算法之字节替换操作
字节替换的基本原理: 使用一个表(被称为S盒)对分组进行逐一字节替换。S盒是AES算法定义的矩阵,把State中每个字节的高4位作为行值,低4位作为列值,然后取出S一盒中对应行列的元素作为输出。这个步骤提供了AES算法加密的非线性变换能力。S盒与有限域乘法逆元有关,具有良好的非线性特性。为了避免简单代数攻击,S盒结合了乘法逆元及可逆的仿射变换矩阵建构而成。C语言实现过程直接使用S原创 2015-11-07 21:38:55 · 15609 阅读 · 3 评论 -
AES加密算法的数学基础
本文是根据自己对AES加密算法的理解,总结并整理出的AES算法数学基础。表述方面存在诸多不足,后续会慢慢改进。1、字节运算:有限域GF(2^8)上的运算(1)有限域GF(2^8) 有限域GF(2^8)表示特征为2的具有2^8个元素的有限域,这里表示成系数在{0,1}中的多项式集合: b(x)原创 2015-11-14 00:39:19 · 5902 阅读 · 0 评论 -
AES加密算法之列混合变换
在AES算法中,需要模多项式m(x)=x^8+x^4+x^3+x+1。列混合即是用一个常矩阵乘以第二步变换后的矩阵,以达到矩阵中每一个元素都是该元素原所在列所有元素的加权和。附上自己敲的C语言源码:#include using namespace std;void PrintfMatrix(unsigned char m[4][4]){ for(int i=0;i<4;i原创 2015-11-17 22:22:53 · 30329 阅读 · 9 评论 -
AES算法演示视频
AES算法演示视频:http://coolshell.cn/wp-content/uploads/2010/10/rijndael_ingles2004.swf原创 2015-11-23 13:42:18 · 1363 阅读 · 0 评论