【发布时间】:2010-03-10 23:17:41
【问题描述】:
我正在寻找一种算法(或代码)来帮助我计算多项式的逆,我需要它来实现 NTRUEncrypt。我更喜欢通俗易懂的算法,有伪代码可以做到这一点,但是它们很混乱,很难实现,而且我不能仅仅从伪代码中真正理解这个过程。
任何计算多项式关于ring of truncated polynomials 的逆的算法?
【问题讨论】:
-
哪个逆?你想要反函数来解决(即分解)多项式,还是想要在作为多项式在某个基域上的商形成的域中找到它们的乘法逆,以及不可约多项式? NTRU 代表“Number Theorists R Us”,IIRC,因此很难凭直觉知道需要什么数学。 en.wikipedia.org/wiki/NTRUEncrypt 说“加密和解密都只使用简单的多项式乘法”,所以那篇文章也没有告诉我你的意思。无论需要什么,这都可能是一个 MathOverflow 问题。
-
在这种情况下,请仔细复制伪代码,逐个操作。当他们说
f(X):=a(X)之类的话时,他们的意思是 f 是您例程中的一个变量,a 是函数的输入,并且这两个东西的类型都是“多项式”。f(X)/X表示例如x^2 + x + 0->x + 1。另一个棘手的部分是当你最终得到答案时,你必须减少它 modX^N-1。 -
哦,为你的函数写一个单元测试。您应该能够将输出乘以输入,以 2 为模减少系数,以 X^N-1 为模减少生成的多项式,并得到多项式 1(即除最后一个以外的所有系数都为 0)。
-
非常感谢 steve,我正在尝试非常仔细地逐行实现伪代码,这里有一个扩展伪代码写得更清楚:wpi.edu/Pubs/ETD/Available/etd-0430102-111906/unrestricted/… 在第 27 页,我我正在仔细编码,我正在用 NTRU 给出的一些示例答案对其进行测试,我认为我在理解伪代码方面也受到阻碍,在我的代码中,我给多项式提供了固定长度和一组值f,8-31的无限循环永远不会结束,感谢指出f是一个变量。还有什么要注意的技巧吗?
-
什么都没有想到。 “步骤 1:初始化”中列出的所有内容都是一个变量,并且在某处进行了修改。您应该看到 f 和 g 变得越来越小(就它们的最高非零系数而言),而 b、c 和 k 实际上记录了您对 f 和 g 所做的事情。一旦 f 在第 5 步中尽可能小 (
1),您在 b 和 k 中“建立”的内容就会反过来,您只需要将这些信息放在一起。作为一个实现细节,如果您将多项式存储为一个系数数组,那么乘以或除以 x 只是意味着将所有内容移到一个位置。
标签: algorithm polynomial-math inverse ntruencrypt