当前位置: 首页 > backend >正文

非对称加密:为什么RSA让“公开传密”成为可能

在1977年之前,加密世界遵循一个铁律:想要安全通信,必须先秘密交换密钥。无论是凯撒密码还是二战时的恩尼格玛机,都依赖发送方和接收方预先共享同一把“钥匙”。但RSA算法的出现颠覆了这一规则——它让陌生人可以在完全公开的环境下建立安全通信,而无需事先约定任何秘密。

今天,RSA(Rivest-Shamir-Adleman)算法支撑着HTTPS、数字签名、SSH等关键技术,成为现代互联网的加密基石。但它是如何做到“公开传密”的?背后的数学原理又是什么?

一、非对称加密

非对称加密,也称为公钥加密,是一种使用一对密钥(公钥和私钥)进行加密和解密的密码学方法。与对称加密(如 AES)不同,非对称加密的公钥和私钥在数学上相关,但不能互相推导,使得通信更安全。

  • 公钥(Public Key):公开给所有人,用于加密数据验证签名
  • 私钥(Private Key):严格保密,用于解密数据生成签名

类比:想象一个带锁的邮箱,任何人都能往里面投递信件(公钥加密),但只有你有钥匙能打开查看(私钥解密)。

二、RSA秘钥的生成过程

1、选择两个大质数 p p p q q q

2、两个大质数相乘得到 N = p × q N = p \times q N=p×q

3、计算欧拉函数 ϕ ( p , q ) = ( p − 1 ) × ( q − 1 ) \phi(p,q) = (p-1) \times (q-1) ϕ(p,q)=(p1)×(q1)

4、选择公钥 E E E E E E 需要满足 (1) 1 < E < ϕ ( p , q ) 1 < E < \phi(p,q) 1<E<ϕ(p,q) (2) E E E ϕ ( p , q ) \phi(p,q) ϕ(p,q) 互质,即 G C D ( E , ϕ ( p , q ) ) = 1 GCD(E,\phi(p,q)) = 1 GCD(E,ϕ(p,q))=1

5、获得私钥 D D D D D D 需要满足 ( D × E ) % T = 1 (D \times E) \% T = 1 (D×E)%T=1

注意 E E E D D D 都不需要是质数

最终秘钥
  • 公钥:(E, N)
  • 私钥:(D, N)
举个例子

1、选择两个质数 61 和 67

2、计算模数 N = 61 * 67 = 4087

3、计算欧拉函数 ϕ \phi ϕ = 60 * 66 = 3960

4、选择公钥 E = 17

5、获得私钥 D = 233

获得公钥 (17,4087) 私钥 (233, 4087)

三、如何加密解密

假设我现在要加密一个单词 DOG,可以发现他的ASCII码是 68 79 71 。那么用公钥加密也是一件简单的事情。

加密:

明文 m m m加密 c = m E mod  N c = m^E \ \text{mod} \ N c=mE mod N密文 c c c
68 6 8 17 mod  4087 68^{17} \ \text{mod} \ 4087 6817 mod 40873284
79 7 9 17 mod  4087 79^{17} \ \text{mod} \ 4087 7917 mod 4087453
71 7 1 17 mod  4087 71^{17} \ \text{mod} \ 4087 7117 mod 40874085

获得加密后的密文 3284 453 4085

解密:

密文解密 m = c D m o d N m= c^{D} \ mod \ N m=cD mod N明文 m m m
3284 328 7 233 mod  4087 3287^{233} \ \text{mod} \ 4087 3287233 mod 408768
453 45 3 233 mod  4087 453^{233} \ \text{mod} \ 4087 453233 mod 408779
4085 408 5 233 mod  4087 4085^{233} \ \text{mod} \ 4087 4085233 mod 408771

明文公钥加密后被私钥破解。

四、为什么非对称加密难以破解

RSA加密的核心在于于大整数的质因数分解问题。公钥包含模数 N = q * ppq 是大质数,而私钥需要知道这两个质数才能计算。所以破解 RSA 就约等于分解 N,但对于足够大的 N即使是超级计算机也需要数万年才能计算成功,目前没有已知的高效算法可以在多项式时间内分解大整数。

  • RSA-1024:曾被认为是安全的,但现代计算能力已能威胁它(需要数月到数年)。
  • RSA-2048:当前标准,破解需要 1 0 20 10^{20} 1020 年(远超宇宙年龄)。
  • ECC-256:等效于RSA-3072的安全性,但密钥更短、计算更快。

五、RSA的局限性

计算量大,通常仅用于密钥交换或签名,而非加密大量数据(实际结合AES等对称加密使用)

Shor算法能在量子计算机上快速分解大数,威胁RSA安全(后量子密码学正在发展)

http://www.xdnf.cn/news/4752.html

相关文章:

  • 计算机科技笔记: 容错计算机设计01 概述 教材书籍 课程安排 发展历史
  • Python连接云端服务器:基于Paramiko库的实践与问题剖析
  • LeetCode 3341.到达最后一个房间的最少时间 I:Dijkstra算法(类似深搜)-简短清晰的话描述
  • 9. 从《蜀道难》学CSS基础:三种选择器的实战解析
  • 密码学--RSA
  • 【AI提示词】费曼学习法导师
  • 缓存套餐-01.Spring Cache介绍和常用注解
  • LeetCode 3341到达最后一个房间的最少时间 I 题解
  • 基于大模型的计划性剖宫产全流程预测与方案优化研究报告
  • 跨浏览器自动化测试的智能生成方法
  • rom定制系列------红米note12 5G版miui14修改型号root版 原生安卓14批量线刷固件 原生安卓15等
  • STM32 ADC
  • 可撤销并查集,原理分析,题目练习
  • 数据结构(三)——栈和队列
  • 《P2880 [USACO07JAN] 平衡系列 G》
  • 【基础复习笔记】计算机视觉
  • 笔记本电脑实现网线内网 + Wi-Fi外网同时使用的配置方案
  • 运维打铁:服务器分类及PHP入门
  • 移植easylogger通过J-Linker的RTT输出日志/Ozone的RTT设置
  • 华为设备MSTP
  • 【IP101】图像压缩技术详解:从JPEG到小波压缩的完整指南
  • 机器人领域和心理学领域 恐怖谷 是什么
  • 如何为APP应用程序选择合适的服务器
  • C++ - 输入输出
  • Matlab 车辆四自由度垂向模型平稳性
  • Jupyter Notebook / Lab 疑难杂症记:从命令找不到到环境冲突与网络阻塞的排查实录
  • 手撕基于AMQP协议的简易消息队列-8(单元测试的编写)
  • linux mutex 互斥锁实现
  • 【网工第6版】第7章 网络操作系统与应用服务器③
  • 芯片测试之Open-Short Test全解析:从原理到实战