Rijndael算法
Rijndael算法是一个由可变数据块长和可变密钥长的迭代分组加密算法,数据块长和密钥长可分别为128,192或256比特。
数据块要经过多次数据变换操作,每一次变换操作产生一个中间结果,这个中间结果叫做状态。状态可表示为二维字节数组,它有4行,Nb列,且Nb等于数据块长除32。如表2-3所示。
|
a0,0 |
a0,1 |
a0,2 |
a0,3 |
a0,4 |
a0,5 |
|
a1,0 |
a1,1 |
a1,2 |
a1,3 |
a1,4 |
a1,5 |
|
a2,0 |
a2,1 |
a2,2 |
a2,3 |
a2,4 |
a2,5 |
|
a3,0 |
a3,1 |
a3,2 |
a3,3 |
a3,4 |
a3,5 |
数据块按a0,0 , a1,0 , a2,0 , a3,0 , a0,1 , a1,1 , a2,1 , a3,1 , a0,2…的顺序映射为状态中的字节。在加密操作结束时,密文按同样的顺序从状态中抽取。
密钥也可类似地表示为二维字节数组,它有4行,Nk列,且Nk等于密钥块长除32。算法变换的圈数Nr由Nb和Nk共同决定,具体值列在表2-4中。
表3-2 Nb和Nk决定的Nr的值
|
Nr |
Nb = 4 |
Nb = 6 |
Nb = 8 |
|
Nk = 4 |
10 |
12 |
14 |
|
Nk = 6 |
12 |
12 |
14 |
|
Nk = 8 |
14 |
14 |
14 |
3.2.1圈变换
加密算法的圈变换由4个不同的变换组成,定义成:
Round(State,RoundKey){ByteSub(State);ShiftRow(State);MixColumn(State);AddRoundKey(State,RoundKey); (EXORing a Round Key to the State)
}
加密算法的最后一圈变换与上面的略有不同,定义如下:
FinalRound(State,RoundKey){ByteSub(State);ShiftRow(State);AddRoundKey(State,RoundKey);
}
文字:http://www.qqread.com/encrypt/a054114620.html
更多内容请看加密与解密技术、常用软件加密宝典、加密算法专题,或进入讨论组讨论。
【深 度 阅 读】 相 关 文 章
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- 常用电脑密码破解实用技巧! (14811次浏览)
- 深入掌握网络加密及解密方法 (9144次浏览)
- 常见电子书格式及其反编译思路 (6502次浏览)
- 数据加密技术 (6242次浏览)
- openssl的man中文文档 (6192次浏览)
- 电脑中的十二种常用密码破解法 (5190次浏览)
- 详解加密技术概念、加密方法以及应用 (4968次浏览)
- 对称加密算法技术概述 (4666次浏览)
- 网络游戏封包基础 (4077次浏览)
- 加密:让你的文件人间蒸发 (4010次浏览)



