【发布时间】:2016-03-02 16:52:44
【问题描述】:
我正在尝试从this (old) implementation on github 了解 Shamir 的秘密共享方案的实施,并且我正在努力解决扩展字段 GF(p^n) 中的霍纳规则:
void horner(int n, mpz_t y, const mpz_t x, const mpz_t coeff[])
{
int i;
mpz_set(y, x);
for(i = n - 1; i; i--) {
field_add(y, y, coeff[i]);
field_mult(y, y, x);
}
field_add(y, y, coeff[0]);
}
为什么add 先出现然后mult?算法是什么?为什么不这样:
mpz_set(y,coeff[n-1]);
for(i = n - 2; i!=-1; i--) {
field_mult(y, y, x);
field_add(y,y,coeff[i]);
}
【问题讨论】:
-
第二个变体缺少 x^n 项。
-
主要问题:为什么在这种情况下在Horner's rule 中使用Monic polynomial (Shamir's Secret Sharing)?