数论概论读书笔记 17.计算模m的k次根

计算模m的k次根

快速幂可以在log时间内求得一个数模m的k次幂

那么反过来呢? 即计算模m的k次根

xkb mod m x k ≡ b   m o d   m

已知 k,b,m k , b , m ,计算 x x 的值。

如果我们枚举x的值,当m很大时,会耗费很长时间。

那么如何快速求解呢?

比如现在要求解同余式

x131758(mod 1073) x 131 ≡ 758 ( m o d   1073 )

先求出 φ(1073)=1008 φ ( 1073 ) = 1008 , 构造一个不定方程 131x1008y=1 131 x − 1008 y = 1

求解最小的正整数 x x ,得x=731,即 131731=1008y+1 131 ∗ 731 = 1008 ∗ y + 1

将(2)式两边做731幂得, xx1008y=(x131)731758731(mod 1073) x ∗ x 1008 y = ( x 131 ) 731 ≡ 758 731 ( m o d   1073 )

x1008y1 (mod 1073) x 1008 y ≡ 1   ( m o d   1073 ) 这里x与1073要互质,即x,b与m要互质。

所以 x758731 (mod 1073) x ≡ 758 731   ( m o d   1073 )

可见欧拉定理在这里的应用很重要。

下面总结一下:

算法17.1 (计算模m的k次根原理) 设b,k,m是已知整数,满足

gcd(b,m)=1gcd(k,φ(m))=1 g c d ( b , m ) = 1 与 g c d ( k , φ ( m ) ) = 1

求解步骤如下:

  • 求解 φ(m) φ ( m )
  • 求满足 kuφ(m)v=1 k u − φ ( m ) v = 1 的正整数 u u
  • 用快速幂计算bu(mod m) 所得值给出解 x x

此算法的瓶颈在于第一步,即对m的质因数分解,复杂度是 O(n) O ( n )

当然也有 Pollard_Rho P o l l a r d _ R h o 质因数分解算法

而大整数难以分解的特性,是许多密码设计的基础。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值