翻译
查看原帖
翻译
521592
Tetrahydrofunina楼主2022/8/23 19:07

RSA密码是一种常用的加密方式,其基本操作如下所示:

选择两个奇质数 ppqq,令 n=pqn=pq,算出 φ(n)=(p1)(q1)\varphi(n)=(p-1)(q-1),选一个整数 ee1e<φ(n),gcd(e,φ(n))=11\leq e<\varphi(n),\gcd(e,\varphi(n))=1),再算出 ee 在模 φ(n)\varphi(n) 意义下的逆元 ddde1(modφ(n))de\equiv 1\pmod{\varphi(n)})。这样,我们就有了一个明钥 (n,e)(n,e),和一个秘钥 (n,d)(n,d)

如果想要发送一个整数 mm (明文)给另一方,我们会算出 c=memodnc=m^e \bmod n,就是密文。发送到另一方手中时,另一方会算出 cdmodnc^d \bmod n。根据欧拉定理,这个结果等于原来的 mm,即明文。如果 nn 很大而且不知道密钥,那么就很难知道明文。

输入 n,e,c(15n109,1e,cn)n,e,c(15\leq n\leq10^9,1\leq e,c\leq n),求明文 mm。多组数据,每组数据一行。(具体看样例)

Translated by 庄nnnn额

源代码:

RSA密码是一种常用的加密方式,其基本操作如下所示:

选择两个奇质数 $p$ 和 $q$,令 $n=pq$,算出 $\varphi(n)=(p-1)(q-1)$,选一个整数 $e$($1\leq e<\varphi(n),\gcd(e,\varphi(n))=1$),再算出 $e$ 在模 $\varphi(n)$ 意义下的逆元 $d$($de\equiv 1\pmod{\varphi(n)}$)。这样,我们就有了一个明钥 $(n,e)$,和一个秘钥 $(n,d)$。

如果想要发送一个整数 $m$ (明文)给另一方,我们会算出 $c=m^e \bmod n$,就是密文。发送到另一方手中时,另一方会算出 $c^d \bmod n$。根据欧拉定理,这个结果等于原来的 $m$,即明文。如果 $n$ 很大而且不知道密钥,那么就很难知道明文。

输入 $n,e,c(15\leq n\leq10^9,1\leq e,c\leq n)$,求明文 $m$。多组数据,每组数据一行。(具体看样例)

Translated by [庄nnnn额](https://www.luogu.com.cn/user/521592)
2022/8/23 19:07
加载中...