【密码学】2. 古典密码

目录

  • 2. 古典密码
    • 2.1 经典加密技术基础
    • 2.2 代换技术
      • 2.2.1 算术密码
      • 2.2.2 代换密码(Substitution Cipher)
    • 2.3 置换技术
    • 2.4 乘积密码
    • 2.5 历史上的教训

2. 古典密码

2.1 经典加密技术基础

  1. 分类
    • 代换(Substitution):明文内容的表示形式改变(元素被替换),但元素相对位置不变(如明文字母被密文字母替代)。
    • 置换(Transposition/Permutation):明文元素的相对位置改变,但内容表示形式不变(仅重排顺序)。
    • 乘积密码(Product Ciphers):多个加密技术的叠加使用。
  2. 约定
    • 小写字母表示明文,大写字母表示密文。
    • 加密时通常舍弃标点、空格(因普通文本中空格占比 17%-18%,频率过高易泄露信息)。

2.2 代换技术

2.2.1 算术密码

  1. 移位密码(凯撒密码,Caesar Cipher)
    • 原理:由 Julius Caesar 提出,每个字母用字母表中其后第 k 个字母替代。
      • 加密:C=E(k,p)=(p+k)mod26C=E(k,p)=(p+k)mod26C=E(k,p)=(p+k)mod26
      • 解密:p=D(k,C)=(C−k)mod26p=D(k,C)=(C−k)mod26p=D(k,C)=(Ck)mod26
      • 部分文献中凯撒密码固定使用 k=3。
    • 示例:明文 “meet me after the toga party”,k=3 时,密文为 “PHHW PH DIWHU WKH WRJD SDUWB”。
    • 安全性:
      • 密钥空间:26 个可能密钥,仅 25 个可用(k=0 时密文与明文一致,无效)。
      • 易被穷举攻击:最坏需尝试 25 次,平均 12.5 次。
  2. 仿射密码(Affine Cipher)
    • 目的:扩大密钥空间,映射关系简单。
    • 原理:
      • 密钥:(a,b)
      • 加密:C=E([a,b],p)=(ap+b)mod26C=E([a,b],p)=(ap+b)mod26C=E([a,b],p)=(ap+b)mod26
      • 解密:p=D([a,b],C)=((C−b)×a−1)mod26(a−1为a在模26下的逆元)p=D([a,b],C)=((C−b)×a^{−1})mod26(a^{−1}为a在模26下的逆元)p=D([a,b],C)=((Cb)×a1)mod26a1a在模26下的逆元)
    • 密钥选取:
      • a≠1a ≠ 1a=1(否则退化为凯撒密码),且需满足 gcd(a,26)=1gcd(a,26)=1gcd(a,26)=1(保证一一映射,否则不同明文可能对应同一密文)。
      • 有效 a 值:3,5,7,9,11,15,17,19,21,23,25(共 11 个)。
    • 密钥空间:11×26=286。

2.2.2 代换密码(Substitution Cipher)

  1. 单表代换密码(Monoalphabetic Cipher)
    • 原理:每个明文字母按固定密钥(26 个字母的置换)替换为唯一密文字母。
    • 示例:
      • 明文:a b c d e f g h i j k l m n o p q r s t u v w x y z
      • 密钥:D K V Q F I B J W P E S C X H T M Y A U O L R G Z N
      • 明文 “ifwewishtoreplaceletters” 加密后为 “WIRFRWAJUHYFTSDVFSFUUFYA”(忽略空格)。
    • 密钥空间:26!≈4×1026(部分密钥含不动点,不可用)。
    • 辅助工具:惠斯通(Wheatstone)密码,一种钟表形式设备,1867 年巴黎世纪博览会首次出现,通过旋转指针和圆盘实现加密。
    • 安全性:
      • 短信息(长度小于密钥)可能被穷举攻击;长信息因字母频率不变(单表替换不改变字母出现频率),易被频率统计攻击。
  2. 英语字母频率特征(密码破译关键)
    • 单字母频率:e 频率最高(12.702%),其次为 t(9.056%)、a(8.167%)等;z、q、x、j 频率接近 0。
    • 双字母组合:最常见为 th、he、in、er、an 等。
    • 三字母组合:最常见为 the、ing、and、her 等。
    • 经典密码破译三要素:频率特征(字母使用次数差异)、连接特征(前后字母关联性,如 q 后几乎必接 u)、重复特征(多字符字符串重复出现,如 th、tion)。
  3. 多表代换加密(Polyalphabetic Cipher)
    • 原理:使用多个单表代换,明文不同位置的字母用不同单表加密,以抵抗频率统计攻击。
  4. 维吉尼亚密码(Vigenère Cipher)
    • 原理:最简单的多表替换密码,由多个凯撒替换表循环构成。
      • 密钥:k=k0k1…kd−1(长度为d)k=k_0k_1…k_{d−1}(长度为 d)k=k0k1kd1(长度为d,第 i 位密钥 kik_iki 对应凯撒替换表 k=kik=k_ik=ki,密钥重复使用。
      • 加密:Ci=E(k,pi)=(pi+kimodd)mod26C_i=E(k,p_i)=(p_i+k_{i\ mod\ d})mod26Ci=E(k,pi)=(pi+ki mod d)mod26
      • 解密:pi=D(k,Ci)=(Ci−kimodd)mod26p_i=D(k,C_i)=(C_i−k_{i\ mod\ d})mod26pi=D(k,Ci)=(Ciki mod d)mod26
    • 示例:密钥 “deceptive”(d=9),明文 “wearediscoveredsaveyourself”,密文为 “ZICVTWQNGRZGVTWAVZHCQYGLMGJ”。
    • 安全性:字母频率被模糊但未完全消失,可通过分组统计破解。
    • 破解方法:
      • 第一步确定密钥长度 d:使用 Kasiski 方法,通过寻找密文中重复字段,计算其间距的最大公约数,即为 d(重复字段间距为 d 的整数倍)。
      • 第二步分组攻击:将密文按位置 i、i+d、i+2d… 分组,每组对应同一单表,再用频率统计攻击破解各分组密钥。

2.3 置换技术

  • 核心特点:通过重排字母顺序隐藏信息,不改变字母表示形式(与代换技术的本质区别:代换改字母,置换改位置)。
  1. 栅栏技术(Rail Fence Cipher)
    • 原理:将明文按对角线方向写成若干行,再按行输出作为密文。
    • 示例:明文 “meet me after the toga party”,写成两行(m e m a t r h t g p r y 和 e t e f e t e o a a t),密文为 “MEMATRHTGPRYETEFETEOAAT”。
  2. 纵行换位(Row Transposition Cipher)
    • 原理:将明文按密钥位数写为若干列,再按密钥顺序输出各列。
    • 示例:明文 “attack postponed until two am”,密钥 “4 3 1 2 5 6 7”(7 位),明文按列排列后,按密钥顺序输出列,密文为 “TTNAAPTMTSUOAODWCOIXKNLYPETZ”。

2.4 乘积密码

  1. 原理:单纯代换或置换安全性不足,连续使用多种加密技术(如交替代换和置换)可大幅提高安全性,是现代密码构造的基本技术之一。
  2. 转轮机(Rotor Machines)
    • 本质:机械时代最复杂的密码机,核心是复杂的多表代换系统,通过多个转轮实现,二战广泛应用(如德国 Enigma、盟军 Hagelin、日本 Purple)。
    • 原理:包含多个圆柱体(转轮),每个圆柱体代表一个代换表;每个字母加密后,转轮旋转,改变代换表。
    • 密钥空间:3 个转轮可提供263=17576个代换表。
  3. Enigma(谜)密码机
    • 发展历程:1918 年由德国 Arthur Scherbius 提出专利,1923 年带反射板的 Enigma-A 问世,1926 年德国海军开始采购,后发展出多种型号。
    • 结构:包含键盘、指示灯板、密钥轮、反射板、接插板等,需 3 人操作(输入明文、读指示灯、记录密文)。
    • 破译关键:
      • 波兰贡献:1928 年获得商业型 Enigma,1931 年通过 “灰烬先生”(汉斯・蒂洛・施密特)获得操作手册等;马里安・雷耶夫斯基利用指标组(随机 3 字母连续加密两遍)构造字母循环圈,开发 “循环测定机” 和 “炸弹机”(Bomba),1939 年向英、法赠送仿制 Enigma 及技术。
      • 英国贡献:1938 年布莱奇利庄园成为国家破译中心,阿兰・图灵 1940 年设计 Bombe 机,针对指标组不再重复加密的情况,通过密文全文寻找明文 - 密文关联破解。
      • 美国贡献:1942 年 Joseph Desch 设计可破解四转轮 Enigma 的机器,1943 年起交付海军,最终 121 台 Bombe 机每日破译德国 Enigma 密钥。
    • 教训:军民混用、叛徒与间谍影响、使用规则错误(主密钥更新周期长、转轮进位点固定)、对安全性过于自负(未及时销毁设备、低估对手)等。

2.5 历史上的教训

  1. Kerckhoff 原则:密码安全性不应依赖算法保密,而应依赖密钥;敌方可能知晓算法,需假设算法公开下仍安全。
  2. 不可低估对手能力:“不可能被攻破” 的密码常被破译(如 DES,1973 年预计需数十年破译,1999 年 22.25 小时即可破解)。
  3. 密码安全性评估:
    • 仅靠密钥组合数评估安全性是片面的(上限为穷举攻击难度),需公开接受全球研究和攻击检验。
    • 表面复杂性可能降低安全性(如禁止字母加密为自身,反而减少攻击者工作量)。
  4. 随机数重要性:随机数生成是密码关键,二战日军曾用编织篮抽纸条(写四位数字)产生随机数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92538.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92538.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS3文本阴影特效全攻略

CSS3文本阴影效果实现 下面我将创建一个展示各种CSS3文本阴影效果的页面&#xff0c;包含多种样式示例和代码实现。 设计思路 创建具有视觉吸引力的标题区域提供多种文本阴影效果实例显示对应的CSS代码以供参考添加交互元素让用户自定义效果 实现代码 <!DOCTYPE html&g…

JavaScript 03 严格检查模式Strict字符串类型详解

2.4 严格检查模式Strict在 JavaScript 里&#xff0c;也是 有 “作用域” 这个说法的。 所以说&#xff0c;变量 也分 全局变量 和 局部变量。 当我们 直接 把 代码 写在 script 双标签里面的时候&#xff0c;我们 JS 会认为 这只是 一个 没有名字的 函数&#xff01;&#xff…

车载诊断ECU架构

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

使用vue-pdf-embed发现某些文件不显示内容

在使用vue-pdf-embed过程中, 突然发现有些pdf文件可以正常打开, 有些文件只显示了一些数字, 并且控制台报出如下警告: Warning: loadFont - translateFont failed: “UnknownErrorException: Ensure that the cMapUrl and cMapPacked API parameters are provided.”. Warning…

【设计模式C#】状态模式(用于解决解耦多种状态之间的交互)

一种行为设计模式。特点是用类的方式去管理状态。优点&#xff1a;对每个状态进行了封装&#xff0c;提高了代码的可维护性&#xff1b;减少了条件判断语句的使用&#xff0c;降低维护成本&#xff1b;易于扩展&#xff0c;每次新增状态都无需大规模修改其他类&#xff0c;符合…

WebSocket数据通过splice保持现有DOM结构仅更新文本内容‌【防闪烁】。

文章目录 前言 一、DOM更新优化机制 ‌1.虚拟DOM复用性 2.‌响应式系统触发 二、性能对比 三、WebSocket场景实践 ‌1.防闪烁原理 2.代码实现示例 四、特殊注意事项 总结 前言 开发过程中渲染websocket返回的数据时&#xff0c;经常会遇到更新数据闪烁的问题&#xff0c;咱们可…

深入解析Hadoop的Block多副本同步机制与Pipeline复制

Hadoop分布式文件系统概述作为Hadoop生态的核心存储组件&#xff0c;HDFS&#xff08;Hadoop Distributed File System&#xff09;的设计哲学源于Google File System论文&#xff0c;其架构专门针对大规模数据集处理场景进行了优化。在理解Block多副本同步机制之前&#xff0c…

洪水预报中的序列到序列模型及其可解释性扩展

洪水预报中的序列到序列模型及其可解释性扩展 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff0c;觉得好请收藏。点击跳转到网站。 1. 引言 洪水预报是水文科学和灾害管理中的重要课题&#xff…

UniApp 优化实践:使用常量统一管理本地存储 Key,提升可维护性

在 UniApp 项目开发中&#xff0c;随着功能的增加&#xff0c;本地存储&#xff08;如 uni.setStorageSync&#xff09;的使用频率也会增加。如果直接在代码中硬编码 key 值&#xff0c;不仅容易出错&#xff0c;也难以后期维护。本文将以“自定义导航栏适配状态栏高度”为例&a…

计算机网络:(八)网络层(中)IP层转发分组的过程与网际控制报文协议 ICMP

计算机网络&#xff1a;&#xff08;八&#xff09;网络层&#xff08;中&#xff09;IP层转发分组的过程与网际控制报文协议 ICMP前言一、IP层转发分组的过程第一步&#xff1a;接收数据包并解封装第二步&#xff1a;提取目标 IP 地址第三步&#xff1a;查询路由表第四步&…

Python爬虫实战:研究concurrent-futures库相关技术

1. 引言 1.1 研究背景与意义 网络爬虫作为互联网数据采集的重要工具,在信息检索、舆情分析、学术研究等领域具有广泛应用。随着互联网数据量的爆炸式增长,传统单线程爬虫的效率已难以满足需求,并发爬虫技术成为研究热点。 1.2 相关工作 现有爬虫框架如 Scrapy、Beautifu…

Neo4j 框架 初步简单使用(基础增删改查)

Neo4j 是一个高性能的、开源的图数据库。它将数据存储为图结构&#xff0c;其中节点表示实体&#xff0c;边表示实体之间的关系。这种图数据模型非常适合处理复杂的关系型数据&#xff0c;能够高效地进行关系查询和遍历。 Neo4j 的主要特性包括&#xff1a; 强大的图查询语言 C…

【iOS】锁[特殊字符]

文章目录前言1️⃣什么是锁&#x1f512;&#xff1f;1.1 基本概念1.2 锁的分类2️⃣OC 中的常用锁2.1 OSSpinLock&#xff08;已弃用&#xff09;&#xff1a;“自旋锁”的经典代表为什么尽量在开发中不使用自旋锁自旋锁的本质缺陷&#xff1a;忙等待&#xff08;Busy Waiting…

在easyui中如何设置自带的弹窗,有输入框

这个就是带input的确认弹框&#xff08;$.messager.prompt&#xff09;// 使用prompt并添加placeholder提示 $.messager.prompt(确认, 确定要将事故记录标记为 statusText 吗&#xff1f;, function(r) {if (r) {// r 包含用户输入的内容var remark r.trim();// 验证输入不为…

Android-API调用学习总结

一、Postman检查API接口是否支持1.“HTTP Request” 来创建一个新的请求。——请求构建界面&#xff0c;这是你进行所有 API 调用的地方。2.设置请求方法和 URL&#xff1a;选择请求方法&#xff1a; 在 URL 输入框左侧&#xff0c;有一个下拉菜单。点击它&#xff0c;选择你想…

《计算机网络》实验报告一 常用网络命令

目 录 1、实验目的 2、实验环境 3、实验内容 3.1 ping基本用法 3.2 ifconfig/ipconfig基本用法 3.3 traceroute/tracert基本用法 3.4 arp基本用法 3.5 netstat基本用法 4、实验结果与分析 4.1 ping命令的基本用法 4.2 ifconfig/ipconfig命令的基本用法 4.3 tracer…

MySQL深度理解-深入理解MySQL索引底层数据结构与算法

1.引言在项目中会遇到各种各样的慢查询的问题&#xff0c;对于千万级的表&#xff0c;如果使用比较笨的查询方式&#xff0c;查询一条SQL可能需要几秒甚至几十秒&#xff0c;如果将索引设置的比较合理&#xff0c;可以将查询变得仍然非常快。2.索引的本质索引&#xff1a;帮助M…

Django母婴商城项目实践(九)- 商品列表页模块

9、商品列表页模块 1、业务逻辑 商品模块分为:商品列表页 和 商品详情页 商品列表页将所有商品按照一定的规则排序展示,用于可以从销量、价格、上架时间和收藏数量设置商品的排序方式,并且在商品左侧设置分类列表,选择某一个分类可以筛选出对应的商品信息。 商品列表页…

8、STM32每个系列的区别

1、F1和F4的系列的区别 F1采用Crotex M3内核&#xff0c;F4采用Crotex M4内核。F4比F1的主频高。F4具有浮点数运算单元&#xff0c;F1没有浮点单元。F4的具备增强的DSP指令集。F407的执行16位DSP指令的时间只有F1的30%~70%。F4执行32位DSP指令的时间只有F1的25% ~ 60%。F1内部S…

DeepSPV:一种从2D超声图像中估算3D脾脏体积的深度学习流程|文献速递-医学影像算法文献分享

Title题目DeepSPV: A deep learning pipeline for 3D spleen volume estimation from 2Dultrasound imagesDeepSPV&#xff1a;一种从2D超声图像中估算3D脾脏体积的深度学习流程01文献速递介绍1.1 临床背景 脾肿大指脾脏增大&#xff0c;是多种潜在疾病的重要临床指标&#x…