A note on the calculation of some functions in finite fields: Tricks of the Trade解读
本节对该paper进行解读,记录笔记。
经常见到的是在素域
素域#
模幂(modular exponentiation)#
模幂运算则是指先进行幂运算,在进行模运算,即
这样对于较小的
,一般这样计算:
方法1#
(1)根据运算规则
(2)根据运算规则
计算完毕。
利用这些规则我们可以有效地计算
当N的值很大时,上面的方法需要计算很长时间,是不切实际的,一般用一下方法:
方法2#
(1)如果N是偶数,那么
(2)如果N是奇数,那么
其中
(3)程序
// 函数功能:利用模运算规则,采用递归方式,计算X^N(% P)
// 函数名:PowerMod
// 输入值:unsigned int x,底数x
// unsigned int n,指数n
// unsigned int p,模p
// 返回值:unsigned int,X^N(% P)的结果
unsigned int PowerMod(unsigned int x, unsigned int n, unsigned int p)
{
if (n ==0)
{
return1;
}
unsigned int temp = PowerMod((x * x)%p, n/2, p); //递归计算(X*X)^[N/2]
if ((n &1) !=0) //判断n的奇偶性
{
temp = (temp * x) % p;
}
return temp;
}
求模逆(Modular inversion)#
意思是:对于
给出三种方法
方法1:扩展欧几里得( extended Euclidean algorithm)#
参考:求逆元
该方法的复杂度为
方法2:费马小定理( Fermat’s Little Theorem)#
具体请参考:求逆元
该方法基于模幂运算,复杂度为
速度慢,更简单,更安全!
方法3#
该方法速度很快,但很难在确定时间内完成。
使用技巧#
比如要分别求
二次剩余(Quadratic residuosity)#
Legendre symbol#
模平方根(Modular square roots)#
就是如何计算二次剩余中的平方根
使用Tonelli-Shanks方法计算:
其中
可逆平方根(inverse square root)#
即计算开方的倒数计算:
应用#
点的压缩(Point Decompression)#
Hash to Curve#
扩域#
作者:Hang Shao
出处:https://www.cnblogs.com/pam-sh/p/16259219.html
版权:本作品采用「知识共享」许可协议进行许可。
声明:欢迎交流! 原文链接 ,如有问题,可邮件(mir_soh@163.com)咨询.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)