← 完整题目索引

PROJECT EULER · #0182

RSA 加密

RSA Encryption

仅题目 · 已解决原题 ↗

RSA 加密基于以下过程:

生成两个不同的质数 pq
计算 n=pqϕ=(p1)(q1)
找到一个整数 e, 1<e<ϕ,使得 gcd(e,ϕ)=1

该系统中的消息是区间 [0,n1] 中的数字。
然后,要加密的文本会以某种方式转换为消息(区间 [0,n1] 中的数字)。
为了加密文本,对于每条消息,计算 m, c=memodn

要解密文本,需要执行以下过程:计算 d,使得 ed=1modϕ,然后对于每个加密消息 c,计算 m=cdmodn

存在 em 的值,使得 memodn=m
我们将 memodn=m 的消息称为 m 未隐藏消息。

选择 e 时的一个问题是不应该有太多未隐藏的消息。
例如,让 p=19q=37
那么 n=1937=703ϕ=1836=648
如果我们选择 e=181,那么,尽管 gcd(181,648)=1,但在计算 memodn 时,所有可能的消息 m (0mn1) 都是未隐藏的。
对于 e 的任何有效选择,都存在一些未隐藏的消息。
重要的是,未隐藏消息的数量应保持在最低限度。

选择 p=1009q=3643
e1<e<ϕ(1009,3643)gcd(e,ϕ)=1 的所有值之和,使得该 e 值的未隐藏消息数最小。

题解待补充

这道题的题目已收录,解题思路、代码和答案将在后续补充。