按照OEIS A354500中的说明,需要在二元域多项式环$\mathbb F_2[x]$上计算高次多项式的模余。
可以想像必定存在能作快速计算的位运算,不过密码学本人并不熟悉,以下程序中的主方法来自此页面。
最终代码有九行。
代码长度:244字节 vs. 全站第一:127字节。
z,u=range(16),256
def s(x):
i=0
for y in range(u):
p,a,b=0,x,y
for j in range(8):p^=b%2*a;a*=2;a^=a//u*283;b//=2
m=(p^1)-1>>8;i=y&m|i&~m
i|=i*u;return(i^i//16^i//32^i//64^i//128^99)&255
for i in z:print(*[f"{s(16*i+j):02x}"for j in z])
|