RSA加密算法分析
简介
RSA加密算法属于公钥加密算法或非对称加密算法,是目前使用最广泛的公钥密码算法之一,以其高安全性而著称。
算法原理
RSA加密算法原理包括密钥生成、加密和解密三个主要步骤。
密钥生成
- 选择两个大质数:$p$ 和 $q$。
- 计算模数:$n=p×q$。$n$用于加密和解密
- 计算欧拉函数:计算$ϕ(n)=(p−1)×(q−1)\phi(n) = (p-1) \times (q-1)ϕ(n)=(p−1)×(q−1)$。
- 选择公钥指数:选择一个整数
e
,使得$1<e<ϕ(n)1 < e < \phi(n)1<e<ϕ(n)$ 且与$ϕ(n)\phi(n)ϕ(n)$互质,通常选择 $e=65537$。 - 计算私钥指数:计算$d$,使得 $d×emodϕ(n)=1$,可以通过扩展欧几里得算法计算出 $d$。
最终结果,公钥为$(n,e)$,私钥为$(n,d)$。
加密
给定明文 $m$(确保 $m<n$),加密过程如下:
$$
c=m^e mod*n
$$
其中 $c$ 为密文。
解密
给定密文C,解密过程如下:
$$
m=c^d mod n
$$
例题
BUUCTF rsa
下载附件,拿到两个文件:flag.enc、pub.key。
看名称就知道flag.enc应该是加密的flag,pub.key应该是密钥。
拿到公钥我们通过在线工具(密钥解析)解析分解公钥拿到以下信息。
公钥指数及模数信息:
key长度: | 256 |
模数: | C0332C5C64AE47182F6C1C876D42336910545A58F7EEFEFC0BCAAF5AF341CCDD |
指数: | 65537 (0x10001) |
即e=65537
,n
(将模数转换为十进制)
通过工具yafu分解模数来得到p和q。
1 |
|