论文下载链接
论文名称:CONSTRUCTING 2m-VARIABLE BOOLEAN FUNCTIONS WITH OPTIMAL ALGEBRAIC IMMUNITY BASED ON POLAR DECOMPOSITION OF F∗22m
1. construction1
2.construction1程序实现
from sage.crypto.boolean_function import BooleanFunction
m=2
n=2*m
F.<w>=GF(2^n)
bata=w^(2^m+1)
cauchy=w^(2^m-1)
f=[0]*(2^n)
for tt in range(2^(m-1)):
for dd in range(1,2^m+2):
#k1=((bata^tt)*(cauchy^dd)).integer_representation()%(2^n-1)
k1=((bata^tt)*(cauchy^dd)).integer_representation()
f[k1]=1
B=BooleanFunction(f)
B.nonlinearity()
3.construction2
4.construction2代码实现
from sage.crypto.boolean_function import BooleanFunction
m=10
n=2*m
F.<w>=GF(2^n)
bata=w^(2^m+1)
cauchy=w^(2^m-1)
f=[0]*(2^n)
for tt in range(1,2^(m-1)):
for dd in range(1,2^m+2):
k1=((bata^tt)*(cauchy^dd)).integer_representation()%(2^n-1)
f[k1]=1
for tt in range(2^(m-1)+1):
k2=(cauchy^tt).integer_representation()
f[k2]=1
B=BooleanFunction(f)
B.nonlinearity()
5. univariate representation
6.univariate representation程序实现
from sage.crypto.boolean_function import BooleanFunction
m=5
n=2*m
F.<w>=GF(2^n)
f=[0]*(2^n)
g=[0]*(2^n)
for l in range(2^m+1):
for r in range(1,2^(m-1)):
k1=(w^(l*(2^m-1)+r)).integer_representation()
f[k1]=1
f[0]=1#加上这行代码之后,非线性度才和t-c-t函数构造1相同
for j in range(1,2^(m-1)):
for k in range(2^m+1):
k1=(w^(2^(m-1)*((2^m+1)*j+(2^m-1)*k))).integer_representation()
g[k1]=1
#for k in range(2^(m-1)+1):
# k2=(w^(2^(m-1)*(2^m-1)*k)).integer_representation()
# f[k2]=1
Bf=BooleanFunction(f)
Bf.nonlinearity()
Bg=BooleanFunction(g)
Bg.nonlinearity()