本文主要是介绍RSA,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、基本原理
公钥与私钥的产生
- 随机选择两个不同大质数 \(p\) 和 \(q\),计算 \(n=p\times q\)。
- 求得 \(\varphi ( n )\)。
- 选择 \(e < \varphi ( n )\),使 $e \perp \varphi (n) $。并求得 \(e\) 在模 \(\varphi ( n )\) 下的逆元 \(d\)。
- 销毁 \(p\) 和 \(q\)。
此时,\(( N , e )\) 是公钥,\((N,d)\) 是私钥。
消息加密
将消息以一个双方约定好的格式转化为数 \(m\),使 \(m < n\) 且 \(m \perp n\)。然后加密为:
\[m ^ e \equiv c \pmod { n }
\]
消息解密
利用密钥 \(d\):
\[c ^ d \equiv m \pmod { n }
\]
正确性证明
根据欧拉定理,解密的正确性是显然的。。。
CTF 的有关题目先咕咕咕。。。
反正密码学这一块还是挺有意思的。
这篇关于RSA的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!