参考文档:http://www.cnblogs.com/iptables/p/5598049.html
http://www.jianshu.com/p/a81f5eaf445d
Rabin加密是一种基于模平方和模平方根的非对称加密算法。
a=x^2 mod m 称a为x模m时的平方,x为a模m时的平方根。
1、加密过程
设私钥p q为两个素数,公钥n=p*q,对于明文m和密文c,定义一下加密过程:
c=m^2 mod n
2、解密过程
根据以下公式计算出mp和mq:
mp = c^((1/4)(p+1)) mod p
mq = c^((1/4)(q+1)) mod q
根据以下公式推导出一个可用的yp和yq:
yp * p + yq * q = 1
根据以下公式计算最终结果:
r = (yp * p * mq + yq * q * mp) mod n
-r = n - r
s = (yp * p * mq - yq * q * mp) mod n
-s = n - s
可以证明每一个密文对应四个原文,而真正的原文一般需要根据验证码来对应。
CTF 中应用Rabin加密的题:https://www.jarvisoj.co