#include //函数声明 unsigned char xtime (unsigned char input); void mixcolum(unsigned char input[4][4], unsigned char output[4][4]); void imixcolum(unsigned char input[4][4], unsigned char output[4][4]); //主函数 int main() { //定义并对自己的学号进行填充 unsigned char input[4][4] = {'2','0','1','0','1','2','1','0','5','8','0','0','0','0','0','0'}; unsigned char mixcolum_output[4][4]; unsigned char imixcolum_output[4][4]; int i, j; mixcolum(input,mixcolum_output); imixcolum(mixcolum_output,imixcolum_output); //以下代码是按格式输出:明文,列混合后的密文,逆列混合后恢复的明文 printf(\"\\n 明文是:\\n\\n\"); for (i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { printf(\"%c \ } } printf(\"\\n\\n 列混合之后是:\\n\\n\"); for (i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { printf(\"%c \ } } printf(\"\\n\\n 逆列混合之后是:\\n\\n\"); for (i = 0; i < 4; i++) { for(j = 0; j < 4; j++) { printf(\"%c \ } } printf(\"\\n\"); return 0; } //一下为三个函数 unsigned char xtime (unsigned char input) // x乘法('02'乘法) { int temp; temp = input<<1; //二进制串左移一位 if(input & 0x80) //判断如果相与如果b7==1,就执行与27相异或 { temp ^= 0x1b; } return temp; } void mixcolum(unsigned char input[4][4], unsigned char output[4][4]) //列混合算法 { int i, j; for(j=0; j< 4; j++) { for(i=0; i<4; i++) { output[i][j] = xtime(input[i%4][j]) //0x02乘法 ^ ( input[ ( i + 1 ) % 4][j] ^ xtime( input[ ( i + 1 ) % 4][j] ) ) //0x03乘法 ^ input[ ( i + 2 ) % 4][j] //0x01乘法 ^ input[ ( i + 3 ) % 4][j]; //0x01乘法 } } } void imixcolum(unsigned char input[4][4], unsigned char output[4][4]) //逆列混合 { int i, j; for(j=0; j< 4; j++) { for(i=0; i<4; i++) { output[i][j] = (xtime(xtime(xtime(input[i % 4][j]))) ^ xtime(xtime(input[i % 4][j]))^xtime(input[i % 4][j])) //0x0E乘法 ^ (xtime(xtime(xtime(input[ ( i + 1 ) % 4][j]))) ^ xtime(input[ ( i + 1 ) % 4][j]) ^ input[ ( i + 1 ) % 4][j]) //0x0B乘法 ^ (xtime(xtime(xtime(input[ ( i + 2 ) % 4][j]))) ^ xtime(xtime(input[ ( i + 2 ) % 4][j])) ^ input[ ( i + 2 ) % 4][j]) //0x0D乘法 ^(xtime(xtime(xtime(input[ ( i + 3 ) % 4][j]))) ^ input[ ( i + 3 ) % 4][j]); //0x09乘法 } } } 效果: 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务