第1关:AES加密 700 任务要求 评论 任务描述 相关知识 编程要求 测试说明 任务描述 本关任务:编写AES算法,实现分组长度和密钥长度都是128bit的AES加密过程,完成对一个分组字符串的加密。 相关知识 为了完成本关任务,你需要掌握:1.AES算法加密流程。2.AES算法每轮的四种变换 编程要求
时间: 2023-12-20 18:05:34 浏览: 205
AES算法主要包括三个方面:轮变化、轮数和密钥扩展。本文以128为例,介绍算法的基本原理;结合C语言,实现高级数据加密算法AES
本任务需要你编写AES算法的加密过程,包括四种变换:SubBytes、ShiftRows、MixColumns和AddRoundKey。
具体步骤如下:
1. 将输入的分组字符串转换成一个16字节的矩阵State。
2. 进行10轮循环,每轮循环包括四个步骤:SubBytes、ShiftRows、MixColumns和AddRoundKey。
3. 最后一轮不进行MixColumns变换。
4. 输出加密后的结果。
编程要求:
1. 实现AES算法加密过程,分组长度和密钥长度都是128bit。
2. 代码必须能够处理不同长度的输入,但对于长度不为16字节的输入,需要进行填充。
3. 代码必须能够处理不同的密钥,但对于密钥长度不为128bit的情况,需要进行扩展。
4. 代码必须能够输出正确的加密结果。
测试说明:
你可以使用已知的测试向量来测试你的代码是否正确。测试向量包括:
1. 输入分组字符串:00112233445566778899AABBCCDDEEFF,密钥:000102030405060708090A0B0C0D0E0F,期望输出结果:69C4E0D86A7B0430D8CDB78070B4C55A。
2. 输入分组字符串:00112233445566778899AABBCCDDEEFF0123456789ABCDEF,密钥:000102030405060708090A0B0C0D0E0F,期望输出结果:DDA97CA4864CDFE06EAF70A0EC0D7191BDB7ECD3A98F00C3DEF2A8E6D84CDB3C。
3. 输入分组字符串:000102030405060708090A0B0C0D0E0F1011121314151617,密钥:000102030405060708090A0B0C0D0E0F,期望输出结果:8EA2B7CA516745BFEAFC49904B496089。
阅读全文