news 2026/7/12 22:51:43

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

作者头像

张小明

前端开发工程师

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/7/1 7:00:01

ViGEmBus实战精要:从零精通游戏控制器模拟的高效方案

ViGEmBus实战精要:从零精通游戏控制器模拟的高效方案 【免费下载链接】ViGEmBus 项目地址: https://gitcode.com/gh_mirrors/vig/ViGEmBus 在游戏开发和测试领域,虚拟控制器的需求日益增长。ViGEmBus作为Windows平台上的专业级游戏控制器模拟驱动…

作者头像 李华
网站建设 2026/7/1 15:46:55

英雄联盟段位修改终极指南:5分钟自定义你的游戏身份

英雄联盟段位修改终极指南:5分钟自定义你的游戏身份 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 想不想在英雄联盟中体验王者段位的风采?或者和朋友开个有趣的段位玩笑?LeaguePrank这款神…

作者头像 李华
网站建设 2026/6/30 14:10:16

Pyenv virtualenv创建Miniconda-Python3.10兼容环境

Pyenv 与 Virtualenv 构建 Miniconda-Python3.10 兼容环境 在当今 AI 与数据科学项目日益复杂的背景下,开发人员常常面临一个看似简单却极为棘手的问题:为什么代码在一个环境中能跑,在另一个环境就报错? 答案往往藏在“环境差异”…

作者头像 李华
网站建设 2026/6/13 19:14:18

MockGPS深度评测:实测Android位置模拟工具的真实表现

作为一款专为Android系统设计的开源位置模拟应用,MockGPS在开发测试和特定场景使用中展现出了独特价值。本文基于实际体验,从功能完整性、性能表现、适用场景等多个维度,对这款工具进行全面评测分析。 【免费下载链接】MockGPS Android appli…

作者头像 李华
网站建设 2026/7/9 20:20:57

【LangChain框架】全面技术解析

文章目录目录一、前置认知:LangChain核心基础信息1.1 核心基础属性对比表1.2 核心模块关联表二、LangChain核心架构解析2.1 分层架构详细对照表2.2 核心技术亮点:LCEL(LangChain Expression Language)三、LangChain核心功能模块详…

作者头像 李华
网站建设 2026/7/9 0:01:52

Unity游戏翻译革命:XUnity.AutoTranslator全功能解析与实战指南

Unity游戏翻译革命:XUnity.AutoTranslator全功能解析与实战指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为语言障碍而错过精彩的Unity游戏内容吗?XUnity.AutoTranslato…

作者头像 李华