趣味密码学之一:从福尔摩斯的小人说起
各位请先看看下图:
这仅仅是单纯的图画吗?
看过福尔摩斯探案集的人应该会有印象--那是在《跳舞的人》中出现的"小人密码"。在这个故事里大侦探面对的难题就是要破解这个密码,得到图画中隐含的信息从而获得破案的线索。聪明的福尔摩斯当然在蛛丝马迹中顺藤摸瓜推理出密码的意思啦。虽然这个故事是虚构的,但其中却包含着丰富的密码学知识。
让我们跟着福尔摩斯一起,展开学习密码知识的旅程。
刚一开始,大侦探接到这张画满小人的纸条当然不可能马上就知道是什么意思。但唯一推测到的是这一串图画代表一串单词或数字。
没错!所谓的"密码"就是一种为了掩人耳目,传送秘密讯息给对方而设计的方法。几乎可以说只要有秘密,为了保护秘密,就有密码。因此密码的起源很早,在人类能够彼此沟通之时,密码也就随之而诞生。原来的信息明明白白、清清楚楚,叫做"明文";"明文"通过某种规则方法转换后就成了"密文",原来的意思就成了秘密。
福侦探手中只有这一串小人("密文"),如果没有更多的密文、更多的线索是无法得知其中意思的。因为如果一个小人代表一个字母,那这么多小人排在一起组成的单词就有成千上万种可能性,根本无法通过一一列举来破解。如图的15个小人的组合就有2615种,简直是天文数字(当时并没有计算机)。再者,如果这些小人每个代表一个数字,而这些数字又恰恰对应某本书上某一页的某个字呢?可能性有很多种,单单凭这一条线索来分析推理明文,和瞎编乱猜没什么区别。因此可以说,这个密码是很安全的,人们无法破解--也就是达到了"完全安全"(Perfect Security)的高度。
在密码学里,要做到理论上绝对的安全只有一种方法:"一次一密"。就是加解密的方法只使用一次,用完即弃。在二次大战时期,间谍们都有一个活页本,每页都记载着加密解密的方法,每次加密后就把那一页销毁,确保安全。
看来我们要为大侦探捏一把汗了。那到底他是如何解决着一难题的呢?
(待续)
趣味密码学之一:从福尔摩斯的小人说起相关推荐
- 趣味密码学入门--cryptohack
趣味密码学入门–cryptohack 前言 Awesome CTF中发现了一个有趣的密码学挑战平台–cryptohack,小白的我通过做题来学习密码学知识吧 cryptohack平台官网:https: ...
- 【程序员趣味】用Python制作带字小人举牌
一.安装selenium库 pip install selenium 结果如下: 1.chromedriver驱动的配置 如果你想要驱动谷歌浏览器,自动打开浏览器,必须匹配chromedriver驱动 ...
- python凯撒密码加密写入文件_Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作...
#-*- coding: gb2312 -*-#用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作#作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/k ...
- BUUCTF Misc wp大合集(2)
前言 之前做杂项的题比较佛,主要是比赛里面考的大多是脑洞,弯路多,有时候没有hint挺难找到思路,做多了也没什么提升,还是喜欢实打实的脚本题和取证分析.4月25号到五一假期结束那段时间,一口气刷了五页 ...
- CISSP考试要求里的“应用密码学”内容辅助记忆趣味串讲
前言 密码学为数据的处理.存储和通信过程提供附加的安全级别.近年来,数学家和计算机科学家开发了一系列日益复杂的算法,这些算法被设计用于确保机密性.完整性.身份认证和不可否认性.在密码学家花费大量时间开 ...
- 趣味实践 利用Python定制可爱的举牌小人
温一壶风尘的酒,独饮往事昭昭. 一.前言 有一些网站可以在线生成举牌小人,看起来很可爱,也比较有趣.生成的图片用来做素材是个不错的选择! upuptoyou是一款非常有创意的小工具,可以用于表白,或节 ...
- 现代密码学大作业(一):实现单表替换的频率分析(python3.7)
现代密码学大作业(一):实现单表替换的频率分析 (知识水平.技能能力有限,如有不足之处,还望多多批评指正) 单表代替是最基础的一种加密方式.在加密时用一张自制字母表上的字母来代替明文上的字母(比如说A ...
- 密码学历史及近40年人物技术里程碑(公号回复“密码学”下载PDF资料,欢迎转发、赞赏、支持科普)
密码学历史及近40年人物技术里程碑(公号回复"密码学"下载PDF资料,欢迎转发.赞赏.支持科普) 原创: 秦陇纪 科学Sciences 今天 科学Sciences导读:密码学是研究 ...
- vue.js 密码加密_密码学初探:隐藏信息的艺术——区块链技术引卷之十一
通证通研究院 × FENBUSHI DIGITAL 联合出品 文:宋双杰,CFA:孙含儒 特别顾问:沈波:Rin:JX 导读 密码学(Cryptography),是一门将信息进行加密处理与传递,以及分 ...
最新文章
- 百倍提升张量计算:谷歌开源TensorNetwork
- leetcode算法题--将一维数组转变成二维数组
- 热电偶单片机代码c语言,基于STC12C5A60S2单片机的恒温箱设计-LCD1602-热电偶(电路图+程序源码)...
- 副本放置策略Copysets论文解读及工程实践
- 裂墙推荐!再也不用求后端给接口了...
- Metro UI 菜单(Winform)
- java基础学习笔记(一)
- ubuntu18.0.4设置开机脚本
- 多线程实战(二)线程同步
- 如何清洗 Git Repo 代码仓库
- 又漏了一张发票,所以报销要及时
- Maven最佳实践:管理依赖
- mysql如何从两个表取出内容_如何从mysql中的两个表中获取数据?
- 第4章 项目整体管理 与 第16章 项目变更管理
- html 如何关闭自动填充,如何禁止浏览器自动填充
- python实现飞机大战源代码+素材+项目分析
- 2021年冬季PAT乙级题解(C/C++语言)
- 新浪微博客户端开发详解-总结(四)
- 华龙进城 一家河北农村草根起家的企业发展史(图)
- 如何让内容运营渗透产品,带动产品高速成长
热门文章
- Spring是什么?SpringMVC是什么?Spring和springMVC的区别?
- 银行行号与银行简称的对应关系
- 价格价值>>>>>>栀子花1
- html代码段落自动缩进,css怎么设置段落缩进?
- 离线安装vscode插件(没有网络的环境下安装插件)
- 农业末流211“自学Java一年”四面拼多多+三面字节跳动成功拿下Offer!
- Verilog取信号的上升沿与下降沿
- w 命令的解释与示例
- 日语的主要国家与城市
- 涂鸦wifi智能插座(BK7231N/BK7231T)刷开源固件,实现mqttt本地化接入homeassistant