[GUET-CTF2019]Uncle Sam(Schmidt-Samoa密码系统-不一样的rsa)

文章介绍了Schmidt-Samoa密码系统,其安全基础依赖于整数因式分解的难度。系统中,通过选取两个大素数p和q来生成密钥,其中n=p*q。加密和解密过程涉及欧拉定理,私钥d计算自phi=(p-1)*(q-1)。文章指出,不必直接求p和q,可以通过在线工具分解n获取。熟悉该系统后,解密变得相对简单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

from Crypto.Util.number import *

def generkey(k):
	p, q = getPrime(k), getPrime(k)
	pubkey = p**2 * q
	n = pubkey
	l = (p-1)*(q-1) / gcd(p-1, q-1)
	privkey = inverse(n, l)
	return pubkey, privkey

def encrypt(m, pubkey):
	return pow(bytes_to_long(m), pubkey, pubkey)


# pubkey =  
# privkey = 
# enc = 

Schmidt-Samoa密码系统

Schmidt-Samoa密码系统,像rabin加密一样,其安全性基于整数因式分解的难度。但 Rabin 解密时会得到四个解,而 Schmidt-Samor 得到的是唯一解。

注:此次所提n与之前不同,但phi不变。

密钥生成

1.选取两个大素数p,q,计算n。

2.计算私钥d

phi=(p-1)*(q-1)

加密

解密

关于获取pq的问题

根据密钥生成的公式,结合欧拉定理可知:

本站所提phi均为(p-1)*(q-1)

所以:

接着:

又因为:

所以就有:

因为a的取值可以是 a = 2,3,4,5…,这里方便计算我们取 2

解题

对于此题,不必麻烦去求p*q,因为给的n可以通过在线网站分解,直接得到p,q,所以只要看得出这个题是Schmidt-Samoa密码系统,就很简单了。

代码就不放了,知道p,q还解不出?!

成功拿到flag!!!

总结:新体系,初识蒙,熟了就好了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

余切66

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

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

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

打赏作者

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

抵扣说明:

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

余额充值