我的笔记: http://caf99af3.wiz03.com/share/s/3a-pHP3y4ABk2SLM5t03faoi2zxPEL18M4g92m15dS0FLt3J

AES首先将初始密钥输入到一个4*4矩阵中。这个4*4矩阵的每一列的4个字节组成一个字,矩阵4列的4个字依次命名为w[0]、w[1]、w[2]和 w[3]。它们构成了一个以字为单位的数组 w。
接着,对w数组扩充 40 个新列,构成总共 44 列的扩展密码数组。新列以如下的递归方式产生:
(1)如果 i 不是 4 的倍数,那么第 i 列由如下等式确定:
w [ i ] = w [ i − 4 ] ⊕ w [ i − 1 ] w[i]=w[i-4]⊕w[i-1] w[i]=w[i−4]⊕w[i−1]
(2)如果i是4的倍数,那么第i列由如下等式确定:
w [ i ] = w [ i − 4 ] ⊕ T ( w [ i − 1 ] ) w[i]=w[i-4]⊕T(w[i-1]) w[i]=w[i−4]⊕T(w[i−1])其中,T是一个复杂的函数。
函数T由三个部分组成:自循环、字节代换和轮常量异或,这三部分的作用分别如下:
(1)字循环:将 1 个字中的 4 个字节循环左移1个字节。
(2)字节代换:对字循环的结果使用S盒进行字节代换。
(3)轮常量异或:将前两步的结果同轮常量 Rcon[j] 进行异或,其中J表示轮数。

轮常量Rcon[j]是一个字,其值见下表。

j 1 2 3 4 5
Rcon[j] 01 00 00 00 02 00 00 00 04 00 00 00 08 00 00 00 10 00 00 00
j 6 7 8 9 10
Rcon[j] 20 00 00 00 40 00 00 00 80 00 00 00 1B 00 00 00 36 00 00 00

下面举个例子:
设初始的128位密钥为:
3C A1 0B 21 57 F0 19 16 90 2E 13 80 AC C1 07 BD
那么4个初始值为:
W[0] = 3C A1 0B 21
W[1] = 57 F0 19 16
W[2] = 90 2E 13 80
W[3] = AC C1 07 BD
下面求扩展的第1轮的子密钥(W[4],W[5],W[6],W[7])。
由于4是4的倍数,所以:
W[4] = W[0] ⨁ T(W[3])
T(W[3])的计算步骤如下:

  1. 循环地将W[3]的元素移位:AC C1 07 BD 变成 C1 07 BD AC;
  2. 将 C1 07 BD AC 作为S盒的输入,输出为78 C5 7A 91;
  3. 将78 C5 7A 91与第一轮轮常量Rcon[1]进行异或运算,将得到79 C5 7A 91,因此,T(W[3])=79 C5 7A 91,故
    W[4] = 3C A1 0B 21 ⨁ 79 C5 7A 91 = 45 64 71 B0
    其余的3个子密钥段的计算如下:
    W[5] = W[1] ⨁ W[4] = 57 F0 19 16 ⨁ 45 64 71 B0 = 12 94 68 A6
    W[6] = W[2] ⨁ W[5] =90 2E 13 80 ⨁ 12 94 68 A6 = 82 BA 7B 26
    W[7] = W[3] ⨁ W[6] = AC C1 07 BD ⨁ 82 BA 7B 26 = 2E 7B 7C 9B
    所以,第一轮的密钥为 45 64 71 B0 12 94 68 A6 82 BA 7B 26 2E 7B 7C 9B。

AES 轮密钥(子密钥如何生成).md相关推荐

  1. aes子密钥生成c语言_一种基于流密码算法的子密钥生成方法与流程

    本发明涉及一种用于分组加解密算法的子密钥的生成方法. 背景技术: 随着信息技术的发展,信息安全性的问题却愈来愈显得突出,保证信息安全的一个重要技术就是密码学.密码学在信息安全技术中扮演着基础的角色,是 ...

  2. 比特币钱包(2) BIP32 HD钱包之生成子密钥

    1. Masster Seed得到子公钥.子私钥 由主私钥和链码,再结合子密钥索引(索引是一个 4Byte 序号),通过 HMAC-SHA512 衍生出子密钥. 父级私钥 --> 子级公钥有两种 ...

  3. gpg加密命令 linux_用 PGP 保护代码完整性(五):将子密钥移到一个硬件设备中 | Linux 中国...

    在这个系列教程中,将为你提供使用 PGP 和保护你的私钥的最佳体验.-- Konstantin Ryabitsev致谢译自 | linux.com 作者 | Konstantin Ryabitsev译 ...

  4. 构建DRM系统的重要基石——EME、CDM、AES、CENC和密钥

    ▼扫描下图二维码了解音视频技术大会更多信息▼ 翻译.编辑:Alex 技术审校:刘姗.周亚桥 本文来自OTTVerse,作者为Krishna Rao Vijayanagar. Easy-Tech#016 ...

  5. DES子密钥计算具体步骤

    DES子密钥计算步骤? 1.输入原密钥 例如:K=12345679ABCDEF 2.输出他的二进制K=0001 0010 - 3.根据给出的换位表 例如(7位*8=56位)置换表1 (57 49 41 ...

  6. DRM系统的重要基石——EME、CDM、AES、CENC和密钥

    前言 本文来自OTTVerse,作者为Krishna Rao Vijayanagar. 任何想要理解DRM(Digital Rights Management,数字版权管理)的人都要遇到AES.CDM ...

  7. Linux keytool命令密钥和证书管理工具,生成ssl证书

    Linux keytool命令密钥和证书管理工具,生成ssl证书 keytool -genkey -alias tomcat8 -keyalg RSA -keystore /opt/tomcat8/c ...

  8. jarsigner 找不到XXX的证书链。xxx必须引用包含私有密钥和相应的公共密钥证书链的有效密钥库密钥条目

    jarsigner -verbose -keystore name.keystore -signedjar sign.apk unsign.apk  keyAlias 使用jarsigner签名时可能 ...

  9. aes子密钥生成c语言_HBase配置AES加密

    特别说明:该专栏文章均来源自微信公众号<大数据实战演练>,欢迎关注! 版本: HDP:3.0.1.0 HBase:2.0.0 一.前言 为了避免第三方非法访问我们的重要数据,我们可以给HB ...

最新文章

  1. 一键生成CSDN文章的思维导图目录
  2. 我的2009:心智成长篇
  3. JS魔法堂:不完全国际化本地化手册 之 拓展篇
  4. Java中的Set操作
  5. SAP 电商云 UI 如何知道当前的 breakpoint 是 xl - extremely large?
  6. java简单多线程_java中实现多线程的几种方式(简单实现)
  7. pytorch gather_【CV】10分钟理解Focal loss数学原理与Pytorch代码
  8. python快速上手_Python快速上手(一)
  9. 不得罪人 VS 不怕得罪人
  10. 20191114每日一句
  11. 2021年9月再次更新-日立电梯,艾默生变频器维修图纸,原理图
  12. 使用selenium下载百度图片
  13. 中兴新支点操作系统_中兴新支点操作系统
  14. html中显示框框中对勾,如何打出方框里有对勾
  15. 掺铥铝酸钇晶体(Tm:YAP)晶体的资料及其相关产品目录
  16. 模电-常见符号-中英文全称
  17. ATTCK靶场系列(一)
  18. Android shell脚本自动启动app,关闭app,遇到crash自动停止
  19. python里load什么意思_如何从python中执行LOAD DATA命令
  20. 系统架构设计笔记(15)—— 网络架构与协议

热门文章

  1. Mysql 常用 时间函数
  2. 物联网协议之一:MQTT协议和kafka
  3. 【XXE漏洞01】XML漏洞原理及实验
  4. 核密度聚类(一)核函数、核密度估计、核密度聚类
  5. Vim 匹配相同的单词并高亮
  6. SSM之spring事务管理
  7. 一步步带你了解分布式数据库的架构演变之路!
  8. 经营者思维—赢在战略人力资源管理
  9. 【算法】【树】已知先序中序序列求后序序列(详细解释)
  10. 安卓获取已创建的悬浮窗集合