【发布时间】:2010-04-24 12:57:50
【问题描述】:
我正在实现 NTRUEncrypt 算法,根据 NTRU 教程,多项式 f 具有逆 g 使得 f*g=1 mod x,基本上多项式乘以其逆约减模 x 得到 1。我得到概念,但在他们提供的示例中,我们将表示为数组[-1,1,1,0,-1,0,1,0,0,1,-1] 的多项式[-1,1,1,0,-1,0,1,0,0,1,-1] 具有[1,2,0,2,2,1,0,2,1,2,0] 的逆g,因此当我们将它们相乘并减少结果模3 时,我们得到1,但是,当我使用 NTRU 算法对它们进行乘法和减法时,我得到 -2。
这是我用 Java 编写的相乘算法:
public static int[] PolMulFun(int a[],int b[],int c[],int N,int M)
{
for(int k=N-1;k>=0;k--)
{
c[k]=0;
int j=k+1;
for(int i=N-1;i>=0;i--)
{
if(j==N)
{
j=0;
}
if(a[i]!=0 && b[j]!=0)
{
c[k]=(c[k]+(a[i]*b[j]))%M;
}
j=j+1;
}
}
return c;
}
它基本上都取多项式a并乘以b,将结果返回c,N指定多项式+1的次数,在上面的例子中N = 11; M是reduction modulo,以3以上为例。
为什么我得到 -2 而不是 1?
【问题讨论】:
-
我的邮箱是 andreycdmd@gmail.com
标签: math polynomial-math ntruencrypt