Я попытался вычислить операцию Tr (x) для координаты x эллиптической кривой F2m (m = 163).Для этого я использовал «Надувной замок» с соответствующими типами.Трасса для моей эллиптической кривой равна 0 или 1, и мой код следующий:
public int CalculateTrace_Test(byte[] array)
{
int m = 163;
BigInteger two = new BigInteger("2", 10);
BigInteger x = new BigInteger(array);
BigInteger xi = x;
BigInteger temp = x;
for (int i = 1; i < m; i++)
{
var next = xi.ModPow(two.Pow(i), fx);
temp = temp.Xor(next);
}
return temp.IntValue;
}
Здесь fx - целое число, образованное из неприводимого полинома f(x) = x^163+x^7+x^6+x^3 + 1
.
Так что мойпроблема в том, что он не работает и, как результат, у меня есть все, но не 1 или 0. Может ли кто-нибудь сказать мне, что не так в моей реализации трассировки?