【问题标题】:how can I calculate order of an element in finite field using ntl?如何使用 ntl 计算有限域中元素的阶数?
【发布时间】:2014-09-01 11:23:50
【问题描述】:

我正在尝试使用 ntl 计算有限域(组)中元素的顺序。但我没有找到任何功能来做到这一点! 有人可以指导我吗?

【问题讨论】:

    标签: element ntl finite-field


    【解决方案1】:

    我认为没有内置的方法可以做到这一点。

    但您可以自己编写脚本。
    一个字段F 有两个操作,加法(+)和乘法(*)。首先,您必须指定是否要知道 g 在组 (F,+) 或组 (F \ {0}, *) 中的顺序。

    1. (F,+)中查找g的顺序:
      这是一个简单的情况,因为如果该字段有 pm 个元素,则该组中每个元素的顺序都是 p。

    2. (F \ {0}, *)中查找g的顺序:
      这有点难。 g(F \ {0}, *) 中的顺序也称为discrete logarithm。基本上,您可以为每个 k=1,...,pm 尝试 gk。但这需要一段时间。一个简单的方法是baby-step giant-step 算法。 我没试过,不过你也可以看看this discrete logarithm implementation using NTL。

    【讨论】:

    • 非常感谢,亲爱的 AbcAeffchen,实际上我知道,这个功能已经在 Sage 、 Pari/gp 和 Magma 中准备好了(内置),它们正在使用 NTL 库。不知何故,我必须以可靠的方式(编码!)在 NTL 中得到答案。现在我正在尝试在 C/C++ 中调用他们的函数并使用结果,这不是一件容易的事!
    • 如果你想只使用 NTL 计算离散对数,你应该看看 Baby-step 巨步算法。它很简单,并且有一些组,其中没有更快的算法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 2016-09-01
    • 2021-11-06
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    相关资源
    最近更新 更多