news 2026/1/26 11:11:39

信息安全篇---密钥生成、加密、解密

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
信息安全篇---密钥生成、加密、解密

📦故事设定

小红想接收秘密信件,她要做三件事:

  1. 造一套魔法锁具(生成密钥对)

  2. 把“魔法锁”发给朋友(公布公钥)

  3. 用“魔法钥匙”开锁读信(私钥解密)

朋友小明要给小红寄信,他需要:

  • 用魔法锁锁上信(公钥加密)


🔑第一步:密钥生成(小红造锁和钥匙)

1.1 选两个秘密质数(找核心材料)

  • 小红悄悄选两个非常大的质数(只能被1和自身整除)。

  • 比如:p = 3q = 11(实际是几百位数字,这里简化)。

  • 关键:这两个数必须绝对保密!是安全的基础。

1.2 制作“锁身”编号 n(公开部分)

  • 计算:n = p × q

  • n = 3 × 11 = 33

  • 这个n可以公开,它是锁的“型号编号”。

1.3 计算“隐藏的齿轮数” φ(n)(绝密!)

  • 计算欧拉函数:φ(n) = (p-1) × (q-1)

  • φ(33) = (3-1) × (11-1) = 2 × 10 = 20

  • 这个φ(n)=20必须像密码本一样藏好,绝对不能泄露!

1.4 选一个“公开的锁孔数字” e(公钥第二部分)

  • 选一个与φ(n)互质(最大公约数为1)的数e

  • 在1和φ(n)之间选,比如选e = 3(3和20互质)。

  • 公钥诞生!(e, n) = (3, 33)

  • 小红可以把(3, 33)印在名片上发给全世界。

1.5 锻造“唯一钥匙” d(私钥)

  • 计算d,使得:(e × d) ÷ φ(n)余数 = 1

  • 数学式:e × d ≡ 1 (mod φ(n))

  • 即:3 × d ≡ 1 (mod 20)

  • 找一个d3 × 7 = 2121 ÷ 201

  • 私钥诞生!(d, n) = (7, 33)

  • 小红必须把(7, 33)记在心里或存在最安全的地方。


🔐第二步:加密(小明用公钥锁信)

小明想发送数字13(代表秘密信息)。

加密公式

密文 C = 明文 M^e mod n

计算过程

  1. 小明拿到小红的公钥:(e=3, n=33)

  2. 明文:M = 13

  3. 计算:C = 13^3 mod 33

    • 13^3 = 13×13×13 = 2197

    • 计算余数:2197 ÷ 33 = 66...?
      33×66 = 2178
      2197 - 2178 = 19

  4. 得到密文C = 19

小明把密文19发送给小红。即使被人截获,看到的只是19,不知道原始信息13


🗝️第三步:解密(小红用私钥开锁)

小红收到密文C=19

解密公式

明文 M = 密文 C^d mod n

计算过程

  1. 小红拿出私钥:(d=7, n=33)

  2. 计算:M = 19^7 mod 33

    • 直接算19^7太大,我们用技巧:

      • 19^2 mod 33 = 361 mod 33 = 28 (因为33×10=330, 361-330=31? 检查:361÷33=10余31) 更正:19^2=361, 33×10=330, 361-330=31 19^4 = (19^2)^2 = 31^2=961 mod 33 = 961÷33=29...4 (33×29=957, 961-957=4) 19^7 = 19^4 × 19^2 × 19^1 = 4 × 31 × 19 = 2356 mod 33 2356 ÷ 33 = 71...? 33×71=2343, 2356-2343=13
    • 恢复明文M = 13

    • 神奇的事情发生了:密文19被还原成原始信息13


      🧩可视化流程


      关键问题解答

      Q1:为什么加密用e,解密用d?

    • 因为(M^e)^d = M^(e×d) = M^(k×φ(n)+1)

    • 根据欧拉定理:M^(φ(n)) ≡ 1 (mod n)

    • 所以M^(k×φ(n)+1) ≡ M (mod n)

    • 魔法就成立了:加密再解密回到原点!

    • Q2:为什么安全?

    • 攻击者知道:n=33,e=3,密文=19

    • 他想破解必须:

      1. 分解n=33→ 得到p=3, q=11

      2. 计算φ(n)=20

      3. 根据e=3d=7

    • 但当n是617位十进制数(2048位)时,分解它需要全世界的计算机算几百万年!

    • Q3:数字太大怎么算?

      实际中M^e可能是个天文数字(比如123456789^65537),但:

    • 模运算:我们只需要余数,不需要完整结果

    • 快速幂算法:计算机可以在瞬间算出结果


    • 📝一张表总结RSA三步骤

      步骤谁执行输入关键操作输出比喻
      密钥生成接收者(小红)两个秘密质数p,q计算n, φ(n), 选e, 求d公钥(e,n), 私钥(d,n)造锁配钥匙
加密发送者(小明)明文M, 公钥(e,n)C = M^e mod n密文C用公钥锁信
解密接收者(小红)密文C, 私钥(d,n)M = C^d mod n明文M用私钥开信

💎核心思想一句话

RSA利用“质数相乘容易,乘积分解极难”的数学特性,创建了一对数学关联的密钥:用公开的(e,n)上锁,用私密的(d,n)开锁,实现了安全的秘密传输。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/20 16:23:41

如何通过Miniconda快速安装PyTorch并运行大模型推理

如何通过Miniconda快速安装PyTorch并运行大模型推理 在深度学习项目中,最让人头疼的往往不是写模型代码,而是环境配置——明明本地跑得好好的,换台机器就报错:ModuleNotFoundError、CUDA 版本不兼容、Python 依赖冲突……尤其是当…

作者头像 李华
网站建设 2026/1/25 23:36:19

避免版本冲突:用Miniconda创建独立PyTorch开发环境

避免版本冲突:用 Miniconda 创建独立 PyTorch 开发环境 在深度学习项目开发中,你是否曾遇到这样的场景?刚跑通一个基于 PyTorch 1.12 的实验,准备复现一篇新论文时却发现它要求 PyTorch 2.0;或者团队成员提交的代码在本…

作者头像 李华
网站建设 2026/1/20 15:16:54

ESP-IDF入门必读:官方示例工程解读

从零玩转 ESP-IDF:官方示例不只是“Hello World” 你有没有过这样的经历?下载了乐鑫的 ESP-IDF,兴冲冲地打开终端执行 idf.py create-project ,结果面对一堆目录和配置文件,完全不知道从哪下手。点开文档&#xff0…

作者头像 李华
网站建设 2026/1/23 17:42:32

LeagueAkari:重新定义你的英雄联盟游戏方式

LeagueAkari:重新定义你的英雄联盟游戏方式 【免费下载链接】LeagueAkari ✨兴趣使然的,功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari 还在为英雄选择犹豫…

作者头像 李华
网站建设 2026/1/22 4:12:12

Jupyter Themes美化界面|Miniconda-Python3.10提升编码体验

Jupyter Themes美化界面|Miniconda-Python3.10提升编码体验 在人工智能项目频繁迭代的今天,一个常见的场景是:研究员刚接手前同事留下的实验代码,却因环境依赖不一致导致运行失败;或者开发者连续调试数小时后&#xff…

作者头像 李华
网站建设 2026/1/21 2:02:06

PyTorch DataLoader多进程加载|Miniconda-Python3.10性能调优

PyTorch DataLoader多进程加载|Miniconda-Python3.10性能调优 在深度学习项目中,你是否曾遇到过这样的场景:GPU 利用率长期徘徊在 20%~30%,训练进度缓慢得像“爬行”?打开任务管理器一看,CPU 却几乎没怎么动…

作者头像 李华