首页 自述 友链 开往

文章

Schmidt-Samoa 密码体系

原理

随机生成两个素数,ppp , qqq

令N=p2⋅qN = p^2\cdot qN=p2⋅q,e=Ne=Ne=N

类似RSA

有Public Key=(e,N)Public\ Key=(e,N)Public Key=(e,N)

计算d=N−1 mod φ(pq)d=N^{-1}\ mod\ \varphi (pq)d=N−1 mod φ(pq)

有Private Key=(d,N)Private\ Key=(d,N)Private Key=(d,N)

加密和解密

加密:c=mN mod Nc=m^N\ mod\ Nc=mN mod N

解密:m=cd mod pqm=c^d\ mod\ pqm=cd mod pq

计算pqpqpq

依据ddd的产生有n⋅d≡1 mod φ(pq)n\cdot d\equiv 1\ mod\ \varphi(pq)n⋅d≡1 mod φ(pq)

任取一个数如2,有2nd≡2 mod pq2^{nd}\equiv 2\ mod\ pq2nd≡2 mod pq

得到pq=gcd(n,2nd−2)pq=gcd(n,2^{nd}-2)pq=gcd(n,2nd−2)

实例[2024 国城杯]babyRSA

from Crypto.Util.number import *
n = ?
d = ?
c = ?
pq = GCD(pow(2,n*d,n)-2,n)
print(long_to_bytes(pow(c,d,pq)))

0 条评论