buuoj 坏蛋是雷宾

老牌刺客之王混进了女王的住所。一天,女王得到了一个匿名举报,说她的侍卫里有一个刺客,叫做Rabin,而他的信息就在一份文件里,文件中有附带一个Pk,是523798549,密文是162853095,校验码二进制值是110001,根据说明是放在明文后一起加密的,明文与密文长度相同。加密算法和这位老牌刺客同名。
根据题意为Rabin算法,解码如下:

import gmpy2  

c = 162853095  # 密文 c  
p = 49123             # 分解后的素数 p  
q = 10663             # 分解后的素数 q  
n = p*q                                                 # 公钥 N  

# 根据中国剩余定理求解相应明文  
r = pow(c,(p+1)/4,p)  
s = pow(c,(q+1)/4,q)  
a = gmpy2.invert(p,q)  
b = gmpy2.invert(q,p)  
x =(a*p*s+b*q*r)%n  
y =(a*p*s-b*q*r)%n  

# 打印明文  
print x%n  
print (-x)%n  
print y%n  
print (-y)%n

求得309480113,即0b10010011100100100101010110001,剔除校验位0b110001,为0b10010011100100100101010

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值