news 2026/6/9 19:44:06

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

作者头像

张小明

前端开发工程师

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/6/9 16:30:42

DownKyi视频下载神器:B站无限下载终极指南

还在为无法离线观看B站精彩内容而烦恼吗?DownKyi作为专业的B站视频下载工具,为你提供全格式视频下载解决方案。这款开源软件支持从标准画质到8K超高清、HDR、杜比视界等高级视频格式,满足各种场景下的下载需求。 【免费下载链接】downkyi 哔哩…

作者头像 李华
网站建设 2026/6/6 21:25:19

LeagueAkari:英雄联盟智能助手完整使用指南

LeagueAkari:英雄联盟智能助手完整使用指南 【免费下载链接】LeagueAkari ✨兴趣使然的,功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari LeagueAkari是一款基…

作者头像 李华
网站建设 2026/6/6 13:28:16

LeaguePrank深度评测:游戏数据展示工具的边界探索

在现代游戏生态中,游戏数据展示工具始终处于技术与道德的交叉地带。LeaguePrank作为一款基于LCUAPI的本地化定制工具,为《英雄联盟》玩家提供了展示层数据展示的可能性。这款工具能否在安全合规的前提下满足用户的个性化需求?让我们从技术解析…

作者头像 李华
网站建设 2026/6/6 21:45:49

HTML表单提交触发Miniconda-Python3.10后台PyTorch推理任务

HTML表单提交触发Miniconda-Python3.10后台PyTorch推理任务 你有没有遇到过这样的场景:好不容易训练好一个图像分类模型,结果导师或产品经理问你一句——“能让我也试试吗?”这时候,总不能让人家 SSH 登录服务器跑 Python 脚本吧&…

作者头像 李华
网站建设 2026/6/6 22:16:24

一文说清vh6501测试busoff的硬件触发机制

一文讲透VH6501如何用硬件“精准投毒”逼出CAN节点Bus-Off你有没有遇到过这样的场景:某ECU在实车路试中偶发进入Bus-Off,通信中断十几秒后才恢复——但实验室里怎么都复现不了?日志抓不到完整上下文,根本无法定位是软件容错逻辑问…

作者头像 李华
网站建设 2026/6/7 3:16:00

Markdown数学公式渲染|Miniconda-Python3.10集成LaTeX支持

Markdown数学公式渲染|Miniconda-Python3.10集成LaTeX支持 在科研、教学和工程实践中,技术文档的表达能力直接影响知识传递的效率。尤其是在人工智能、机器学习等高度依赖数学建模的领域,如何清晰、准确地展示公式,已经成为开发者…

作者头像 李华