模平方根与Cipolla算法

描述

  Cipolla算法用于求解一般形式的模平方根,如 m 2 ≡ c   ( m o d   p ) m^2\equiv c\ (mod\ p) m2c (mod p)已知 c c c反解 m m m的过程。

定理引入

  该算法需要一定的数论基础,比如费马小定理、域相关知识。在证明过程中用到了下面的定理,在此只做引入不做证明。

定理1:

  由欧拉判别法知:对于 x 2 ≡ a   ( m o d   p ) x^2\equiv a\ (mod\ p) x2a (mod p),模 p p p的二次剩余与二次非剩余均有 p − 1 2 \frac{p-1}{2} 2p1个。
  若 a a a为平方剩余,则:
a p − 1 2 ≡ 1   ( m o d   p ) a^{\frac{p-1}{2}}\equiv 1\ (mod\ p) a2p11 (mod p)  若 a a a为平方非剩余,则:
a p − 1 2 ≡ − 1   ( m o d   p ) a^{\frac{p-1}{2}}\equiv -1\ (mod\ p) a2p11 (mod p)   a a a显然不为 p p p的倍数。该定理说明,由随机数得到一个二次非剩余的概率很大。

定理2:

( a + b ) p ≡ a p + b p   ( m o d   p ) (a+b)^p\equiv a^p+b^p\ (mod\ p) (a+b)pap+bp (mod p)

定理3:

w p ≡ − w   ( m o d   p ) w^p\equiv -w\ (mod\ p) wpw (mod p)

定理4:

  费马小定理的推论,其中 a a a为任意数:
a p ≡ a   ( m o d   p ) a^p\equiv a\ (mod\ p) apa (mod p)

求解过程

  • 随机产生一个数 a a a,若 a 2 − c a^2-c a2c为模p的平方非剩余,即 ( a 2 − c ) p − 1 2 ≡ − 1   ( m o d   p ) (a^2-c)^{\frac{p-1}{2}}\equiv -1\ (mod\ p) (a2c)2p11 (mod p)。由定理1知,该过程很快便可以实现。
  • 建立一个新的域,设该域中的单位为 w = a 2 − c w=\sqrt {a^2-c} w=a2c ;这类似于复数域中的单位 i i i。因此该新域中的所有数都可以表示为 a + b w a+bw a+bw的形式。
  • 得出已知 c c c反解 m m m的结果为:
    m ≡ ( a + w ) p + 1 2   ( m o d   p ) m\equiv (a+w)^{\frac{p+1}{2}}\ (mod\ p) m(a+w)2p+1 (mod p)

下证结果成立:
m ≡   ( a + w ) p + 1 2 ≡   ( ( a + w ) p + 1 ) 1 2 ≡   ( ( a + w ) p ( a + w ) ) 1 2 ≡   ( ( a p + w p ) ( a + w ) ) 1 2 − − − 定 理 2 ≡   ( ( a − w ) ( a + w ) ) 1 2 − − − 定 理 3 、 4 ≡   ( a 2 − w 2 ) 1 2 ≡   c 1 2 ≡   c   ( m o d   p ) \begin{aligned} m\equiv &\ (a+w)^{\frac{p+1}{2}}\\ \equiv &\ ((a+w)^{p+1})^{\frac{1}{2}}\\ \equiv &\ ((a+w)^p(a+w))^{\frac{1}{2}}\\ \equiv &\ ((a^p+w^p)(a+w))^{\frac{1}{2}}---定理2\\ \equiv &\ ((a-w)(a+w))^{\frac{1}{2}}---定理3、4\\ \equiv &\ (a^2-w^2)^{\frac{1}{2}}\\ \equiv &\ c^{\frac{1}{2}}\\ \equiv &\ \sqrt c\ (mod\ p) \end{aligned} m (a+w)2p+1 ((a+w)p+1)21 ((a+w)p(a+w))21 ((ap+wp)(a+w))212 ((aw)(a+w))2134 (a2w2)21 c21 c  (mod p)故得证。

参考资料

[1]. Cipolla算法学习小记

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D-A-X

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值