目录
技能展示
文章
日记
时间线
项目展示
分类
标签
Android Bash Burp C++ CS CTF DLL劫持 Docker Fastjson Fastjson2 FNV-1a FreeCMS FRP GetShell GitHub IPv6 Java JNDI John JS加密 JS逆向 K8s Kafka Kali lama-cleaner Linux mitmproxy MSF MySQL Nim Nmap NPS Office OID Payload Phar PHP phpMyAdmin POP链 PWN Pyinstaller Python RCE RSA Shellcode SNMP SQL注入 SSH SSRF Ubuntu USB Web Webshell Web安全 Windows XSS YAML Zookeeper 主机探测 代码审计 伪协议 免杀 内网 内网穿透 加密 加解密 参数 反序列化 反弹shell 命令 哈希碰撞 图像处理 域渗透 字符串逃逸 容器 密码学 密码破解 提权 数据库 文件上传 日志分析 未授权访问 权限维持 汇总 流量分析 消息队列 溯源 漏洞 漏洞分析 漏洞利用 端口扫描 编译 网络管理 资产探测 跨平台 运维 进程隐藏 逆向
目录
目录
1087 字
5 分钟
RSA原理
RSA原理
1、选择一对不相等且足够大的质数
1p、q2、计算 p,q 的乘积
1n = p * q3、计算 n 的欧拉函数
1φ(n) = (p - 1) * (q - 1)4、选一个与 φ(n) 互质的整数 e
11 < e < φ(n)5、计算出 e 对于 φ(n) 的模反元素 d
1d * e mod φ(n) = 16、公钥
1KU = (e, n)7、私钥
1KR = (d, n)| 步骤 | 说明 | 描述 |
|---|---|---|
| 1 | 选择一对不相等且足够大的质数 | p、q |
| 2 | 计算 p,q 的乘积 | n = p * q |
| 3 | 计算 n 的欧拉函数 | φ(n) = (p - 1) * (q - 1) |
| 4 | 选一个与 φ(n) 互质的整数 e | x 1 < e < φ(n) |
| 5 | 计算出 e 对于 φ(n) 的模反元素 d | d * e mod φ(n) = 1 |
| 6 | 公钥 | KU = (e, n) |
| 7 | 私钥 | KR = (d, n) |
加密流程
1明文 M 加密 M^e mod n = C2密文 C 解密 C^d mod n = M例题
1p = 32q = 113n = 3 * 11 = 334φ(n) = (3 - 1) * (11 - 1) = 201与 φ(n) 互质的整数 1 < e < φ(n)2e = 31e 对于 φ(n) 的模反元素 d2d * 3 mod φ(n) = 13d * 3 mod 20 = 14d = 71加密 M = 202KU = (3, 33)3密文 C = 20^3 mod 33 = 141解密 C = 142KR = (7, 33)3明文 M = 14^7 mod 33 = 20代码
1import gmpy22
3
4p = 35q = 116n = p * q7phi_n = (p - 1) * (q - 1) # φ(n)8e = 39
10d = gmpy2.invert(e, phi_n)11c = 1412m = pow(c, d, n)13print m # m = 20欧拉函数φ(n)
1欧拉函数φ(n)的定义是小于n的自然数中与n互质的数的个数欧拉定理
1若n,a为正整数,且n,a互质,则:a^φ(n)≡1 mod n费马小定理

模运算
模运算与基本四则运算有些相似,但是除法除外。其规则如下:
1(a + b) % p = (a % p + b % p) % p2(a - b) % p = (a % p - b % p) % p3(a * b) % p = (a % p * b % p) % p4a ^ b % p = ((a % p) ^ b) % p5结合律6((a + b) % p + c) = (a + (b + c) % p) % p7((a * b) % p * c) = (a * (b * c) % p) % p8交换律9(a + b) % p = (b + a) % p10(a * b) % p = (b * a) % p11分配律12(a + b) % p = (a % p + b % p) % p13((a + b) % p * c) % p = ((a * c) % p + (b * c) % p14重要定理15若 a ≡ b (mod p),则对于任意的 c,都有(a + c) ≡ (b + c) (mod p)16若 a ≡ b (mod p),则对于任意的 c,都有(a * c) ≡ (b * c) (mod p)17若 a ≡ b (mod p),c ≡ d (mod p),则18(a + c) ≡ (b + d) (mod p)19(a - c) ≡ (b - d) (mod p)20(a * c) ≡ (b * d) (mod p)21(a / c) ≡ (b / d) (mod p)1逆元2a mod p的逆元便是可以使 a * a' mod p = 1 的最小a'推导过程
1式1:c = m ^ e % N2式2:m = c ^ d % N将式1带入式2 得 m = (m ^ e % N ) ^ d % N
需要证明:m == ( m ^ e % N ) ^ d % N
1(m ^ e % N) ^ d % N2
3=> (m ^ e) ^ d % N #模运算 a ^ b % p = ((a % p) ^ b) % p4
5m ^ (e * d) % N #幂的乘方,底数不变,指数相乘将 e * d ≡ 1 (mod φ(N)) 即 e * d = K * φ(N) + 1,K为任意正整数,代入得:
1=> (m ^ (K * φ(N) + 1)) % N2
3=> (m ^ (K * φ(N) * m ^ 1) % N # 同底数相乘,指数相加4
5=> (m ^ (K * φ(N) * m) % N6
7=> ((m ^ φ(N) ^ K % N * m) % N # 幂的乘方,底数不变,指数相乘8
9=> ((m ^ φ(N) ^ K % N * m % N) % N # (a * b) % p = (a % p * b % p) % p10
11=> ((m ^ φ(N) % N) ^ K % N * m % N) % N # a ^ b % p = ((a % p) ^ b) % p12
13=> (1 ^ K % N * m % N) % N # 根据欧拉定理:a ^ φ(n) ≡ 1 mod n 即 a ^ φ(n) mod n = 114
15=> (m % N) % N # 1 ^ K % N = 116
17=> (m % N) % N18
19=> (m % N) ^ 1 % N20
21=> (m ^ 1) % N # a ^ b % p = ((a % p) ^ b) % p22
23=> m % N24
25m # 因为 m < N部分信息可能已经过时
目录
技能展示
文章
日记
时间线
项目展示
分类
标签
Android Bash Burp C++ CS CTF DLL劫持 Docker Fastjson Fastjson2 FNV-1a FreeCMS FRP GetShell GitHub IPv6 Java JNDI John JS加密 JS逆向 K8s Kafka Kali lama-cleaner Linux mitmproxy MSF MySQL Nim Nmap NPS Office OID Payload Phar PHP phpMyAdmin POP链 PWN Pyinstaller Python RCE RSA Shellcode SNMP SQL注入 SSH SSRF Ubuntu USB Web Webshell Web安全 Windows XSS YAML Zookeeper 主机探测 代码审计 伪协议 免杀 内网 内网穿透 加密 加解密 参数 反序列化 反弹shell 命令 哈希碰撞 图像处理 域渗透 字符串逃逸 容器 密码学 密码破解 提权 数据库 文件上传 日志分析 未授权访问 权限维持 汇总 流量分析 消息队列 溯源 漏洞 漏洞分析 漏洞利用 端口扫描 编译 网络管理 资产探测 跨平台 运维 进程隐藏 逆向
目录