Перенос кода с Python на С++
3 000 руб. за проект
Переписать код Python (Sagemath 8.8) на С++ с использованием библиотеки Givaro. Скрипт 30 строк, расчет конечных полей Галуа.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%time
from sage.crypto.sboxes import sboxes
from sage.crypto.boolean_function import BooleanFunction
from sage.crypto.sbox import SBox
from collections import Counter
p=3
Sg=[]
for n in [2..4]:
for k in [0..p^(n-1)]:
F = GF(p)
FF.<g> = GF(p^n)
FFlist = list(FF)
FFstar = [i for i in FF][1:]
R.<x> = FF[]
FF1=Set(FFlist).difference([g^0])
z=exp(2*pi*I/p)
zn=exp(2*pi*I/(p^n))
var('x,a,c')
def trace(x):
return sum(x^(p^s) for s in [0..n-1])
def f(x):
return x^(p^2+1)+g^k*x^(p+1)
S=[f(x) for x in FFlist]
for c in FF:
def C(x,a):
return f(x+a)-c*f(x)
def Zn(x,a):
return ZZ(C(x,a).integer_representation()).digits(p)
def cC(a):
return sum(zn^(ZZ(Zn(x,a),base=p)) for x in FF)
Su=[simplify(expand(cC(a))) for a in FFlist]
if set(flatten(simplify(Su)))=={0}:
print((n,k,c))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%time
from sage.crypto.sboxes import sboxes
from sage.crypto.boolean_function import BooleanFunction
from sage.crypto.sbox import SBox
from collections import Counter
p=3
Sg=[]
for n in [2..4]:
for k in [0..p^(n-1)]:
F = GF(p)
FF.<g> = GF(p^n)
FFlist = list(FF)
FFstar = [i for i in FF][1:]
R.<x> = FF[]
FF1=Set(FFlist).difference([g^0])
z=exp(2*pi*I/p)
zn=exp(2*pi*I/(p^n))
var('x,a,c')
def trace(x):
return sum(x^(p^s) for s in [0..n-1])
def f(x):
return x^(p^2+1)+g^k*x^(p+1)
S=[f(x) for x in FFlist]
for c in FF:
def C(x,a):
return f(x+a)-c*f(x)
def Zn(x,a):
return ZZ(C(x,a).integer_representation()).digits(p)
def cC(a):
return sum(zn^(ZZ(Zn(x,a),base=p)) for x in FF)
Su=[simplify(expand(cC(a))) for a in FFlist]
if set(flatten(simplify(Su)))=={0}:
print((n,k,c))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- Файлы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.