一、解析/思路
Main脚本:GF(2^8)上的多项式转换为1·8的数组
Poly_2_8函数:接收多项式f,g,m,返回mod(fg,m)
拆分多项式g,分步与f相乘,并保存于矩阵T
Func1:接收多项式f与拆分的多项式gi,返回fgi的结果
Func2:接收分步相乘的结果T,返回异或结果
二、代码
三、Main
f=[0 1 0 0 1 1 0 1];
g=[1 0 0 1 1 0 0 1];
m=[0 0 0 1 1 1 0 1];
disp(Poly_2_8(f,g,m));
1、Poly_2_8
function [ret] = Poly_2_8(f,g,m)
% f,g,m为1·8的矩阵
%Func1:二进制乘法
%Func2:异或
T=[];
G=zeros(1,8);
for i=1:8
if(g(9-i)==1)
G(1,9-i)=1;
T=[T;Func1(f,G,m)];
end
G=0.*G;
end
ret=Func2(T);
end
2、Func1
function [ret] = Func1(f,g,m)
[a,b]=find(g==1);
for i=1:8-b
temp=f(1);
f(1:7)=f(2:8);
f(8)=0;
if(temp==1)
f=xor(f,m);
end
end
ret=f;
end
3、Func2
function [ret] = Func2(T)
ret=T(1,:);
temp=size(T);
for i=2:temp(1)
ret=xor(ret,T(i,:));
end