Comsec作业五:GF(2^8)乘法证明
ComSec
'''# File : Prove_GF.py# Author : Hongpei Lin# Date : 20191016# Purpose : prove GF(2^8)'''import copymod_number=[285,299,301,333,351,355,357,361,369,391,397,425,451,463,487,501]#multilpy in GF(2^8)def mul(a,b,n): r=0 while b: if b%2: r=r^a#add operation : XOR b=b>>1 if a&int('10000000',2)==0:#hightest bit's value = 0 a=a<<1 else:#hightest bit's value = 1 a=a<<1 a=a^n return r#jugde whether a list exists same elementdef Judge_Same(a): b=copy.deepcopy(a) b.sort() for i in range(len(a)-1): if b[i]==b[i+1]: return False return True#judge whether a list all values are "True"def Judge_True(a): for i in a: if i==False: return False return Truefinal=[]k=len(mod_number)-1while k: result = [] for i in range(1,256): subresult=[] for j in range(1,256): subresult.append(mul(i,j,mod_number[k])) result.append(Judge_Same(subresult)) final.append(Judge_True(result)) k-=1print(Judge_True(final))