这是《应用密码学》课程中的一次作业,我把他分享出来。
在自己的学号后面补充6个零组成共16个字符作为明文,经过列混合得到16个字节的密文,密文以字符的形式输出显示(不以16进制显示),再经过逆列混合恢复出明文,运行结果截图粘贴在文档中。
程序中至少包含三个自定义函数,其参考原型分别是:
unsignedchar xtime(unsigned char input);//x乘法(’02’乘法)
void mixcolum(unsigned char input[16],unsigned char output[16]);//列混合
void imixcolum(unsigned char input[16],unsigned char output[16]);//逆列混合
参考示例:
假设某同学的学号是2008122212,则在后面补充6个零,形成2008122212000000,可定义明文为:
unsigned char input[16]={'2','0','0','8','1','2','2','2','1','2','0','0','0','0','0','0'};
1.[代码][C/C++]代码
#include
#include
unsigned char xtime (unsigned char input)// x乘法('02'乘法)
{
int temp;</