⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mixcolumns.cpp

📁 之前看書參考試著自己寫 但沒成功 請網上較強的大哥試著修改一下 謝啦
💻 CPP
字号:
#include "stdafx.h"
#include "MixColumns.h"											//Different


void count_ffe(int temp[4]);
int Fin_field_math(int a,int b);
void Fin_field_mul(int t_bit[8],int b_bit[8]);
void Fin_field_mul(int t_bit[8],int b_bit[8]);

											//Different
int Fin_field_e[4][4]={
	{0x02,0x03,0x01,0x01},
	{0x01,0x02,0x03,0x01},
	{0x01,0x01,0x02,0x03},
	{0x03,0x01,0x01,0x02}
};



void MixColumns(int state[4][4])
{
	int i=0;
	int j=0;
	int temp[4];
	for(i=0;i<4;i++)
	{
		for(j=0;j<4;j++)
		{
			temp[j]=state[j][i];
		}
		count_ffe(temp);
		for(j=0;j<4;j++)
		{
			state[j][i]=temp[j];
		}
	}
}
void count_ffe(int temp[4])
{
	int medi[4]={0,0,0,0};
	int i=0;
	int j=0;
	for(i=0;i<4;i++)
	{
		for(j=0;j<4;j++)
		{
			medi[i]=medi[i]^Fin_field_math(Fin_field_e[i][j],temp[j]);
		}
		
	}
	for(i=0;i<4;i++)
	{
		temp[i]=medi[i];
	}
}
int Fin_field_math(int a,int b)
{
	int i;

	int a_bits[8];
	int b_bits[8];
	int c_bits[8];
	int d_bits[8]={0,0,0,0,0,0,0,0};
	int t_bits[8];
	int ans[8]={0,0,0,0,0,0,0,0};

	byte2bit(a,a_bits);
	byte2bit(b,b_bits);


	for(i=7;i>=0;i--)
	{
		if(a_bits[i]==1)
		{
			bit_copy(d_bits,t_bits);
			bit_copy(b_bits,c_bits);

			t_bits[i]=1;

			Fin_field_mul(t_bits,c_bits);
			bit_xor(ans,c_bits);
		}
	}

	return bit2byte(ans);
}
void Fin_field_mul(int t_bit[8],int b_bit[8])
{
	int i=0;
	int j=0;
	int m[8]={1,1,0,1,1,0,0,0};

	for(i=7;i>=1;i--)
	{
		if(t_bit[i]==1)
		{
			Rot_bit(b_bit);
			if (b_bit[0]==1)
			{
				b_bit[0]=0;
				bit_xor(b_bit,m);
			}
			t_bit[i]=0;
			t_bit[i-1]=1;
		}
	}

}
























⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -