实验一 AES变换操作的实现 一、实验目的 ( 1 )加深对 AES 算法的理解; ( 2 )阅读标准 (fips-197) 和文献,提高自学能力; ( 3 )加深对模块化设计的理解,提高编程实践能力。 二、实验内容 ( 1 )按照 AES 算法,完成 AES 算法 S 盒、行移位、列混合、轮密钥加操作; 三、实验要求 ( 1 )把 AES 的 S 盒、行移位、列混合、轮密钥加操作 写成一个函数 ,然后再主程序中调用;( 备注:函数名称命名方式 ****_ 后 2 位,变量名称 ***_ 后 2 位 ,例如为“ 177201 ” S 盒函数 SubBytes_63( unsigned char input_01[4][4] ) ( 2 )输入 128bits 一个状态矩阵,输入为 16 进制数。状态矩阵的录入为一行,比如 : 32 43 f6 a8 88 5a 30 8d 31 31 98 a2 e0 37 07 34 则轮密钥加的子密钥如: a0 fa fe 17 88 54 2c b1 23 a3 39 39 2a 6c 76 05 ( 请注意这里是 列向优先 读取数据的 ) ( 3 )与 标准中的样例 进行比较 , 输入标准中样例,测试 S 盒、行移位、列混合和轮密钥加算法正确。 ( 4 )实验程序测试中,二组测试结果 第 1 组: 状态矩阵的录入为一行,比如 : 19 3d e3 be a0 f4 e2 2b 9a c6 8d 2a 9a c6 8d 2a e9 f8 48 08 则轮密钥加的子密钥如: a0 fa fe 17 88 54 2c b1 23 a3 39 39 2a 6c 76 05 字节替代、行移位、列混合、轮密钥加的测试结果 第 2 组 例如为“ 177201 ” 状态矩阵的录入为一行,比如 : 20 15 01 12 63 00 00 00 00 00 00 00 00 00 00 0E 则轮密钥加的子密钥如: a0 fa fe 17 88 54 2c b1 23 a3 39 39 2a 6c 76 05 字节替代、行移位、列混合、轮密钥加的测试结果 ( 5 )程序的输出部分写在主程序中,可以是 4 行 4 列,也可以为一行。若为一行,输出也要求为 列向优先 。 ( 6 )认真填写实验报告。