您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页include

include

来源:化拓教育网


#include #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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务