各位请先看看下图:


这仅仅是单纯的图画吗?

看过福尔摩斯探案集的人应该会有印象--那是在《跳舞的人》中出现的"小人密码"。在这个故事里大侦探面对的难题就是要破解这个密码,得到图画中隐含的信息从而获得破案的线索。聪明的福尔摩斯当然在蛛丝马迹中顺藤摸瓜推理出密码的意思啦。虽然这个故事是虚构的,但其中却包含着丰富的密码学知识。
       让我们跟着福尔摩斯一起,展开学习密码知识的旅程。

刚一开始,大侦探接到这张画满小人的纸条当然不可能马上就知道是什么意思。但唯一推测到的是这一串图画代表一串单词或数字。
     没错!所谓的"密码"就是一种为了掩人耳目,传送秘密讯息给对方而设计的方法。几乎可以说只要有秘密,为了保护秘密,就有密码。因此密码的起源很早,在人类能够彼此沟通之时,密码也就随之而诞生。原来的信息明明白白、清清楚楚,叫做"明文";"明文"通过某种规则方法转换后就成了"密文",原来的意思就成了秘密。

福侦探手中只有这一串小人("密文"),如果没有更多的密文、更多的线索是无法得知其中意思的。因为如果一个小人代表一个字母,那这么多小人排在一起组成的单词就有成千上万种可能性,根本无法通过一一列举来破解。如图的15个小人的组合就有2615种,简直是天文数字(当时并没有计算机)。再者,如果这些小人每个代表一个数字,而这些数字又恰恰对应某本书上某一页的某个字呢?可能性有很多种,单单凭这一条线索来分析推理明文,和瞎编乱猜没什么区别。因此可以说,这个密码是很安全的,人们无法破解--也就是达到了"完全安全"(Perfect Security)的高度。
      在密码学里,要做到理论上绝对的安全只有一种方法:"一次一密"。就是加解密的方法只使用一次,用完即弃。在二次大战时期,间谍们都有一个活页本,每页都记载着加密解密的方法,每次加密后就把那一页销毁,确保安全。

看来我们要为大侦探捏一把汗了。那到底他是如何解决着一难题的呢?

(待续)

趣味密码学之一:从福尔摩斯的小人说起相关推荐

  1. 趣味密码学入门--cryptohack

    趣味密码学入门–cryptohack 前言 Awesome CTF中发现了一个有趣的密码学挑战平台–cryptohack,小白的我通过做题来学习密码学知识吧 cryptohack平台官网:https: ...

  2. 【程序员趣味】用Python制作带字小人举牌

    一.安装selenium库 pip install selenium 结果如下: 1.chromedriver驱动的配置 如果你想要驱动谷歌浏览器,自动打开浏览器,必须匹配chromedriver驱动 ...

  3. python凯撒密码加密写入文件_Python用户名密码登录系统(MD5加密并存入文件,三次输入错误将被锁定)及对字符串进行凯撒密码加解密操作...

    #-*- coding: gb2312 -*-#用户名密码登录系统(MD5加密并存入文件)及对字符串进行凯撒密码加解密操作#作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/k ...

  4. BUUCTF Misc wp大合集(2)

    前言 之前做杂项的题比较佛,主要是比赛里面考的大多是脑洞,弯路多,有时候没有hint挺难找到思路,做多了也没什么提升,还是喜欢实打实的脚本题和取证分析.4月25号到五一假期结束那段时间,一口气刷了五页 ...

  5. CISSP考试要求里的“应用密码学”内容辅助记忆趣味串讲

    前言 密码学为数据的处理.存储和通信过程提供附加的安全级别.近年来,数学家和计算机科学家开发了一系列日益复杂的算法,这些算法被设计用于确保机密性.完整性.身份认证和不可否认性.在密码学家花费大量时间开 ...

  6. 趣味实践 利用Python定制可爱的举牌小人

    温一壶风尘的酒,独饮往事昭昭. 一.前言 有一些网站可以在线生成举牌小人,看起来很可爱,也比较有趣.生成的图片用来做素材是个不错的选择! upuptoyou是一款非常有创意的小工具,可以用于表白,或节 ...

  7. 现代密码学大作业(一):实现单表替换的频率分析(python3.7)

    现代密码学大作业(一):实现单表替换的频率分析 (知识水平.技能能力有限,如有不足之处,还望多多批评指正) 单表代替是最基础的一种加密方式.在加密时用一张自制字母表上的字母来代替明文上的字母(比如说A ...

  8. 密码学历史及近40年人物技术里程碑(公号回复“密码学”下载PDF资料,欢迎转发、赞赏、支持科普)

    密码学历史及近40年人物技术里程碑(公号回复"密码学"下载PDF资料,欢迎转发.赞赏.支持科普) 原创: 秦陇纪 科学Sciences 今天 科学Sciences导读:密码学是研究 ...

  9. vue.js 密码加密_密码学初探:隐藏信息的艺术——区块链技术引卷之十一

    通证通研究院 × FENBUSHI DIGITAL 联合出品 文:宋双杰,CFA:孙含儒 特别顾问:沈波:Rin:JX 导读 密码学(Cryptography),是一门将信息进行加密处理与传递,以及分 ...

最新文章

  1. 百倍提升张量计算:谷歌开源TensorNetwork
  2. leetcode算法题--将一维数组转变成二维数组
  3. 热电偶单片机代码c语言,基于STC12C5A60S2单片机的恒温箱设计-LCD1602-热电偶(电路图+程序源码)...
  4. 副本放置策略Copysets论文解读及工程实践
  5. 裂墙推荐!再也不用求后端给接口了...
  6. Metro UI 菜单(Winform)
  7. java基础学习笔记(一)
  8. ubuntu18.0.4设置开机脚本
  9. 多线程实战(二)线程同步
  10. 如何清洗 Git Repo 代码仓库
  11. 又漏了一张发票,所以报销要及时
  12. Maven最佳实践:管理依赖
  13. mysql如何从两个表取出内容_如何从mysql中的两个表中获取数据?
  14. 第4章 项目整体管理 与 第16章 项目变更管理
  15. html 如何关闭自动填充,如何禁止浏览器自动填充
  16. python实现飞机大战源代码+素材+项目分析
  17. 2021年冬季PAT乙级题解(C/C++语言)
  18. 新浪微博客户端开发详解-总结(四)
  19. 华龙进城 一家河北农村草根起家的企业发展史(图)
  20. 如何让内容运营渗透产品,带动产品高速成长

热门文章

  1. Spring是什么?SpringMVC是什么?Spring和springMVC的区别?
  2. 银行行号与银行简称的对应关系
  3. 价格价值>>>>>>栀子花1
  4. html代码段落自动缩进,css怎么设置段落缩进?
  5. 离线安装vscode插件(没有网络的环境下安装插件)
  6. 农业末流211“自学Java一年”四面拼多多+三面字节跳动成功拿下Offer!
  7. Verilog取信号的上升沿与下降沿
  8. w 命令的解释与示例
  9. 日语的主要国家与城市
  10. 涂鸦wifi智能插座(BK7231N/BK7231T)刷开源固件,实现mqttt本地化接入homeassistant