密码学小传——凯撒密码的解密起源

简介: 密码学小传——凯撒密码的解密起源

摄影:产品经理

在我小时候,我自己研究并想出过一种加密算法。

例如,想给喜欢的女同学传递一张纸条,上面写着“我爱你”,但是如果直接传过去,纸条可能会被其他同学拦截,导致秘密泄露。

于是,我把我爱你写成拼音 wo ai ni,然后把26个字母移动几位:

  1. abcdefghijklmnopqrstuvwxyz
  2. ijklmnopqrstuvwxyzabcdefgh

这样一来, w->eo->wa->ii->qn->v,所以 wo ai ni变成了 ew iq vq。只要我喜欢的女同学也有这个对应关系,她就能把密文转换为明文。而其他人如果没有这个对应关系,就看不懂我写的是什么。

小时候对我发明的这种密码沾沾自喜,长大了才知道,这个加密算法叫做 凯撒密码,早在几千年前就已经被发明了。

今天我们来谈谈凯撒密码是如何被破解的。

故事要追溯到公园815年的阿巴斯王朝。当时的学者收集埃及、巴比伦、印度、中国等等文明的文字并翻译为阿拉伯文字。当时的神学家在研究《古兰经》的时候,想为这些天启编定年代顺序。但书上并没有写实际的年份,如何推断呢?

他们想到了一个办法:因为语言是随着历史而不断发展的,有一些词汇先出现,有一些词汇后出现。只要统计文献里面每个词的词频,那么新词多的文献,撰写的时间肯定就晚。

他们的研究粒度,不仅到单词,还到字母,于是发现某些字母,在不同的文献里面,出现的频率总是会高于另一些字母。这一个发现导致了密码分析学的第一次突破。

公元9世纪,阿拉伯哲人肯迪的伟大作品 《解译加密信息手稿》(AManuscriptonDecipheringCryptographicMessages介绍了密码分析学中的频率分析法的说明。

凯撒加密虽然改变了字母,但是并没有改变字母的频率。假设英文里面出现频率最高的字母是 e,那么使用凯撒密码把 e对应到其他字母,例如 m以后, m的在密文里面的频率就会变成最高。于是数出密文中的每个字母的频率,就可以反向推断出明文的字母。除了单个字母外,字母之间的组合也能够提供有效的信息,例如英文中 the常常一起出现,而密文里面出现了大量的 bpm,由于已经推测出了 me,那么可以进一步推测 bpm可能是 the

当然,频率分析法并不是总是有用,例如《La Disparition》这本法国小说,全书没有一个字母e,应该作家吉尔伯特·亚戴尔把这本小说翻译成了英文,也没有出现一个e。如果把这本书使用凯撒密码进行加密,那么使用频率分析法在密文里面,把频率最高的字母假设为e就会出错。


目录
相关文章
|
9月前
|
安全 关系型数据库 MySQL
Windows Server 安装 MySQL 8.0 详细指南
安装 MySQL 需要谨慎,特别注意安全配置和权限管理。根据实际业务需求调整配置,确保数据库的性能和安全。
918 9
|
9月前
|
机器学习/深度学习 监控 算法
机器学习在图像识别中的应用:解锁视觉世界的钥匙
机器学习在图像识别中的应用:解锁视觉世界的钥匙
1063 95
|
11月前
|
机器学习/深度学习 监控 搜索推荐
从零开始构建:使用Hologres打造个性化推荐系统的完整指南
【10月更文挑战第9天】随着互联网技术的发展,个性化推荐系统已经成为许多在线服务不可或缺的一部分。一个好的推荐系统可以显著提高用户体验,增加用户粘性,并最终提升业务的转化率。本指南将详细介绍如何使用阿里云的Hologres数据库来构建一个高效的个性化推荐系统。我们将涵盖从数据准备、模型训练到实时推荐的整个流程。
683 0
|
9月前
|
数据采集 存储 供应链
数据合并:cbind函数在网页爬取中的实用技巧
本文介绍了如何通过代理IP和多线程技术提高网页爬取效率,并使用`cbind`函数合并数据。以财经网新闻为例,展示了从指定网站下载、解析内容,到数据获取、合并及分析的完整流程。通过亿牛云爬虫代理和Python代码实现,确保高效无痕访问,最终将结果保存为CSV文件。此方法适用于大量分散数据的爬取与处理,助力经济趋势分析。
302 47
|
9月前
|
机器学习/深度学习 安全 网络安全
网络安全词云图与技术浅谈
### 网络安全词云图与技术浅谈 本文介绍了通过词云图展示网络安全关键术语的方法,并探讨了构建现代网络安全体系的关键要素。词云图利用字体大小和颜色突出高频词汇,如恶意软件、防火墙、入侵检测系统等。文中提供了生成词云图的Python代码示例,包括安装依赖库和调整参数。此外,文章详细讨论了恶意软件防护、加密技术、身份验证、DDoS防御、社会工程学防范及威胁情报等核心技术,强调了多层次、多维度的安全策略的重要性。
350 11
网络安全词云图与技术浅谈
|
9月前
|
人工智能 自然语言处理 Java
《Java 与 OpenAI 协同:开启智能编程新范式》
本文探讨了如何通过Java API调用OpenAI模型,结合两者优势开拓智能化应用。Java具备跨平台性、稳定性和丰富类库,而OpenAI的GPT等模型拥有强大的语言处理能力。文章详细介绍了准备工作、请求构建与响应解析、优化调用及错误处理,并展示了智能客服、内容生成和数据分析等领域的实际应用案例,展望了未来更多拓展方向,如智能家居和金融科技。这一结合为开发者带来无限创新可能。
221 12
|
9月前
|
人工智能 Serverless 视频直播
活动实践 | AI智能体实时语音互动
AI智能体实时语音互动方案提供端到端的实时音频交互,用户通过终端SDK与云端AI智能体进行音频通话。AI智能体接收音频输入,依据预定义工作流处理并生成响应,通过ARTC网络推送结果。该方案支持灵活编排AI组件如语音转文字、大语言模型等,确保高可用、低延迟的通信体验。用户可轻松创建和管理智能体及实时工作流,实现高效对话,并可通过示例网站体验功能。
|
11月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于贝叶斯优化卷积神经网络(Bayes-CNN)的多因子数据分类识别算法matlab仿真
本项目展示了贝叶斯优化在CNN中的应用,包括优化过程、训练与识别效果对比,以及标准CNN的识别结果。使用Matlab2022a开发,提供完整代码及视频教程。贝叶斯优化通过构建代理模型指导超参数优化,显著提升模型性能,适用于复杂数据分类任务。
|
11月前
|
Linux iOS开发 MacOS
Matplotlib 教程 之 Matplotlib 中文显示 2
Matplotlib 中文显示教程,介绍如何通过设置 Matplotlib 字体参数或下载支持中文的字体库来实现中文显示。适用于 Windows、Linux 和 macOS 系统,确保图表中文本正确呈现。
219 0
|
API 开发者 Python
API接口:原理、实现及应用
本文详细介绍了API接口在现代软件开发中的重要性及其工作原理。API接口作为应用程序间通信的桥梁,通过预定义的方法和协议实现数据和服务的共享。文章首先解释了API接口的概念,接着通过Python Flask框架示例展示了API的设计与实现过程,并强调了安全性的重要性。最后,本文还讨论了API接口在Web服务和移动应用程序等领域的广泛应用场景。