【问题标题】:Why isnt my equation evalutaing correctly?为什么我的方程没有正确评估?
【发布时间】:2019-11-08 13:36:43
【问题描述】:

所以我正在为 Python 中的 uni 项目制作 BCH 解码器。它需要一个 10 位的代码字,无论是否有错误,都应该检测并纠正它发现的任何错误。对于双重纠错,有一个数学公式可以检测这些错误的位置和大小:
formula for error pos and mag

i = (-Q + ((Q^2-4*P*R)^(1/2))/2*P)<br/>
j = (-Q - ((Q^2-4*P*R)^(1/2))/2*P)

b = (i*s1-s2)/(i-j)<br/>
a = s1-b

我已经正确计算了 QPR 和 s1,s2。
所以,我正在用这个例子(2 error BCH example)进行调试。它的数字 8888880747 被传输到 8899880747,因此位置 3 和位置 4 的 2 错误幅度均为 1。到目前为止,我的程序生成了正确的 syndromes(s1 to s4 - 2,7,3,3) 和正确的 PQR 值 (10,7,10)但是在计算 i 和 j 时,我得到的值与示例不同 - 10.710.6 而不是 34。 这是我的 i 和 j 代码:

#work out error positions i and j
sqrt = ((Q**2 - 4*P*R) % 11)**(1/2)
i = (((-Q+sqrt)/(2*P))%11)
j = (((-Q-sqrt)/(2*P))%11)

谁能看到我做错了什么?谢谢。

【问题讨论】:

  • @meowgoesthedog 所以我已经暗示为: sqrt = ((Q**2 - 4*P*R) % 11)**(1/2) i = ((-Q+ sqrt)/(2*P)) i = (i + (i % 11)) % 11 j = ((-Q-sqrt)/(2*P)) j = (j + (j % 11)) % 11 但我仍然得到错误的值(10.39、10.2)。我误解了你的回答吗?
  • 我的错误。看看Fractional Modular Arithmetic
  • 我对这个主题不熟悉,但也许你应该接受modular square roots mod 11。

标签: python math cryptography algebra


【解决方案1】:

这些运算应在GF(11) 中进行,换句话说,它们应在模11 中进行。平方根和除法模11 与实数不同。

有用于计算平方根和模逆的高级算法,但对于小到 11 的数字,您可以使用蛮力或预先计算表格。在这里遵循第一原则。对于 sqrt(x) 尝试 [0,1,2,...10] 并查看哪个平方等于 x。那就是平方根。对于除法(逆),1/x,尝试 [0,1,2,...10] 并查看乘以 x 时哪个等于 1 mod 11。现在我们插入这些值以获得 i = 3, j = 4。

所以,通过计算 mod 11,我们有:

P、Q、R = (10,7,10) (Q**2 - 4*P*R) = -351, -351 % 11 = 1 这很方便,因为 1 的平方根只是 1 mod 11。 看看接下来的两个方程,我们需要计算 1/(2*P) mod 11,换句话说,我们需要找到 2*P mod 11 的倒数,即 (2P)-1 模式 11。 2*P % 11 = 20 % 11 = 9。通过尝试所有可能性,我们发现 9-1 mod 11 是 5。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多