2021bilibili1024程序员节-- 安全攻防题目1(AES)

 题目如下:

 

这是密码学中高级加密里的AES。

具体相关知识也可以参考我的blog~下面就是搬运过来d现代密码之对称算法 | Suy's Blog (0w0suy.github.io)icon-default.png?t=L9C2https://0w0suy.github.io/2021/07/30/%E7%8E%B0%E4%BB%A3%E5%AF%86%E7%A0%81%E4%B9%8B%E5%AF%B9%E7%A7%B0%E7%AE%97%E6%B3%95/

 

高级加密标准(Advanced Encryption Standard ),采用的一种区块加密标准。这个标准用来替代原先的DES。

AES的加密过程是在一个4×4的字节矩阵上运作,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:

1、 字节替代(SubBytes)—透过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。

2、行移位(ShiftRows)—将矩阵中的每个横列进行循环式移位。

3、列混淆(MixColumns)—为了充分混合矩阵中各个直行的操作。这个步骤使用线性转换来混合每内联的四个字节。最后一个加密循环中省略MixColumns步骤,而以另一个AddRoundKey取代。

4、轮密钥加(AddRoundKey)—矩阵中的每一个字节都与该次回合密钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。

 

 

AES的解密过程分别为对应的逆操作。由于每一步操作都是可逆的,按照相反的顺序进行解密即可恢复明文。加解密中每轮的密钥分别由初始密钥扩展得到。算法中16字节的明文、密文和轮密钥都以一个4x4的矩阵表示。

下面从网上找了几张图来直观说明

字节代替

 

 行移位

 在AES中(区块大小128位),第一行维持不变,第二行里的每个字节都向左循环移动一格,第三行里的每个字节都向左循环移动二格,第四行里的每个字节都向左循环移动三格。经过行移位之后,矩阵中每一竖列,都是由输入矩阵中的每个不同列中的元素组成。

列混淆

 轮密相加

密钥将会与原矩阵合并。在每次的加密循环中,都会由主密钥产生一把回合密钥  

 

 密钥扩展

 解题

 密钥是:happy_1024_2233

密文是:e9ca6f21583a1533d3ff4fd47ddc463c6a1c7d2cf084d3640408abca7deabb96a58f50471171b60e02b1a8dbd32db156

Mode:ECB

Decrypted text:

00000000
00000010
00000020
61316364356638342d32373936363134
362d33373736663330312d3634303331
62623900000000000000000000000000

flag:a1cd5f84-27966146-3776f301-64031bb9 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值