知识盲盒


加密和解密,几千年历史中,它们一直在此消彼长的对抗。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201026185122923.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80ODc4NTcwNw==,size_16,color_FFFFFF,t_70#pic_center) 最原始的第一代加密法很简单,我们每个人都用过,就是“隐藏法”,也就是把信息藏起来。从有文字出现,一直到现在都在用。破解方法就是认真搜找,纯粹是体力活。

史上第一个加密法的记载,是古希腊历史学家希罗多德记录的一个加密术的故事。这段故事,发生在他出生前300多年。

当时,强大的波斯帝国计划入侵希腊。斯巴达曾经的老国王得知后,偷偷把这个消息写在木板上又涂了一层蜡。这片木板成功躲过沿路卫兵的检查,到达斯巴达。收信人刮去表面的那层蜡,就发现了下面的密报。得知波斯人的入侵计划后,希腊开始备战。公元前480年,波斯舰队以为对方无准备,结果自己一天之内200多艘战舰被击沉,五年多的准备毁于一旦。

可以说,这次密报挽救了雅典和斯巴达,其实也等于挽救了现代文明。

因为现代文明有两个思想根源,一个是公元前5世纪巅峰时期的古希腊思想, 一个后来的基督教思想。

这场战争发生的前后,正是古希腊思想达到巅峰之时。如果当年雅典和斯巴达输掉的话,科学和民主可能都不会出现。类似的“隐藏法”,在希罗多德的记录中还有更高级的。

比如先把送信,人的头发剃光,然后把保密消息写在那人的头皮上,等他头发长出来后,让送信人出发,到了目的地再把头发剃光,保密消息就读出来了。

这个方法不但可以躲过沿路的盘查,甚至连送信人也不知道消息内容,只是送一次消息至少要2个月时间,有点长。

隐藏法还有很多种,比如把消息写在绸缎上,用蜡裹成一个小球, 让送信人吞下去,到了目的地再想法取出。还有在熟鸡蛋壳上用一种药水儿(明矾和醋)写密文,之后蛋壳上不会有痕迹,只能剥了皮才能看到蛋白上有字。

这些隐藏法对付完全小白的人还可以,对付稍加提防的卫兵就不灵了。让他们留意一下蜡板, 留意头皮颜色,见到熟鸡蛋就剥皮检查,这些信息就全都暴露了。

简单来说,就是想方设法藏匿,解密方法就是想方设法翻找,有时候就是个体力活。但自从有了文字后人们就一直在用,直到今天人们藏私房钱时用的还是这个套路。

第二代的加密法是对文字进行简单加密,即移位法和替代法。

它们是大约5000年前出现的,直到9世纪才被阿拉伯人发明的频率分析法破解,中间隔了足足有4000年。在另一边的欧洲,实际上直到16世纪,都还没掌握这种破解方法。从这里我们也能感受到,阿拉伯文明曾经的辉煌。

移位法很简单。举个例子,比如一个1874的车牌号,把每个数字都在数列中往后加1,那么1变2,2变3, 1874就变成了2985。

因为都是数字你可能觉得反差不大,但如果字母也这样变化,看起来就很不一样了。字母顺序改变也是一样,从a排列到z,比如要对hello world加密,加密规则是每个字母都向后移动2位,“hello world"就变成了"jgnnq yqtnf”。

普通小白一看,这都什么啊,看不懂,其实它只不过做了基础加密。这就是移位法。

替代法也很好理解,就是把文中一部分母其他字母代替。

比如For man is man and master of his fate (人就是人,自己命运的主人)。那如果,把其中的a都用z代替, o用y代替,e用w代替,i用x代替。就成了一段谁也看不出来的文字:

For man is man and master of his fate. Fyr mzn xs mzn znd mzstwr yf hxs fztw.

大约在距今5000多年前,古埃及人就在文字中使用了移位和替代法。虽然基础,但很管用。这个方法广泛运用了接近4000年时间。

在漫长的时间里也出现了很多变种,比如顺序倒着写,或者奇数位和偶数位的变化不一样,或者把奇数和偶数位的字母拆分后,首尾相连等等。

这两种加密法的加密原理就是这样,一听就懂,但是, 想解密可就不容易了。

一条消息的长度如果有十几个词,想用试错的办法猜出来,只能采用排列组合。假设任何一个字母都有可能是26个字母中的任何一个,那这条消息每增加一个字母,排列方式就增加26倍。一句话可能的排列总数,也许要超过整个宇宙原子的总数,靠碰运气是没法猜出来的。

所以直到16世纪,欧洲人都没有破解法。

这才只是两代加密法,一下就讲了5000年密码学发展史的前4500年。为什么会跨度如此之大?其实就在于前4500年的加密法太简单了。那为什么简单的加密法还被使用这么多年?原因很简单,它们跟数学的关系非常微弱。

无论是加密还是解密,一用上了数学,就有意思多了。因为破解移位法和替代法的,就是我们每个人都知道的概率"这个概念。其实,不只是密码学,可以说,一切科学的深奥程度,都可以大致用它背后的数学工具的复杂度衡量。

就拿第三代的维吉尼亚密码来说,它是16世纪出现的,成功压制解密法长达300年,直到1900年左右被破解。

但也就是从这一代开始, 加密和解密的迭代速度越来越快。原因你肯定也猜到了,因为现代科学出现了,复杂的数学工开始在机乎所有领域应用。

而且也是从一代加密法开始,“钥匙”的概念诞生了。这可以说是整个密码学最重要的一个概念。

比如第四代加密法,是一战后发明的一 种机器,叫恩尼格玛机(Enigma)。它成功压制解密法只有25年左右,后来被数学家图灵破解,而钥匙就是最重要的突破口。

从第一代的隐藏法到图灵破解第四代的恩尼格玛密码机,实际上密码学的古典时代就已经进入了尾声。

从纸笔时代到机械电子时代,最显著的差异就是加密的复杂度以及效率的大幅提高。

但从第五代加密法,也就是70年代出现的魔王加密系统(Lucifr) 开始,密码学就出现了分水岭。

因为计算机的出现,让加密解密的最小单位从字母变成了数字,数字的变化打乱了信息的底层结构。二进制的0和1,让密码的复杂度一下就上升了不知道多少个数量级。

所以,在计算机出现之前的密码学叫做古典密码学,之后的叫做现代密码学。

第五代加密法虽然很难破解,但递送钥匙的过程有明显漏洞,还有待提升。

70年代末,第六代的RSA加密系统出现了,它解决了钥匙递送中的漏洞,可靠性大幅提升。虽然它并不是无法破解,但因为计算量太大,在理论上破解时间无限长。

目前互联网加密的底层,就是RSA加密法。我们生活的这个加密一方赢面较大,解密一方处于劣势的时代,正是建立在第六代加密法的基础上。

但如果子计算机出现,计算机算力大幅增加,无限长破解时间可能会缩短为几分钟到几小时。而在这之前,RSA加密法暂可以算作没有破解方法。也是从第六代开始,你会越来越虽烈的体会到钥匙"这个东西的重要性。

第七代加密法是量子加密,它背后的理论支撑是测不准原理和特殊的算法。

当前因为技术水平不够,只能对长度比较短的钥匙加密,而不能对整个信息加密。据说在一些国家的高级保密单位已经开始使用。它从物理学和数学原理上是不可破解的,最强的加密法。

说完了这7代加密法的出现和破解,不知道你发现了一个规律没有:每一个加密法出现,到它的破解法诞生,间隔时间在剧烈的缩短。比如最初,替代法和它的破解方法频率分析,相隔了四千年时间,而到了二战时候,恩尼格码机的出现到破译只用了十多年时间。

其实这也映射出科学技术提升的趋势。科技一发展是尽人皆知的,而加速的程度在变更剧烈,就很少人察觉了。可能有的人要问,不对,RSA加密,不都出现了40年了吗,为什么没有破解?

这就要说到另一个穿整个密码学发展的规律:

你想过一个问题没有:是什么因素决定了一个密码能否被破译呢?对比一下古典密码和现代密码,你就能发现答案了。

古典密码学,加密和解密过程中,最小操作单位都是单个字符或者符号,所以古典密码学的核心就是移位法和替代法。

现代密码学,把研究对象用数来描述,再对数进行运算。不但突破了字姆作为最小变化单位的限制,还可以使用更高等的数学工具做运算,因此破译就变得越来越难。

所以,加密时所用的数学工具,决定了一个密码能否被破译。

第二代的移位法和替换法的安全性很好,也比较好用,但到了16世纪,这个局面扭转了。因为概率论的出现,这两种加密法可以破解了。

自此之后,加密与解密的对抗战中,因为数学的应用,解密一方暂时占据优势。

转自《卓克密码学30讲》(有改动)

道高一尺,魔高一丈--加密与解密的此消彼长相关推荐

  1. 不错的威盾PHP加密专家解密算法

    <?php /*********************************** *威盾PHP加密专家解密算法 http://www.my400800.cn **************** ...

  2. 数字证书采用公钥体制进行加密和解密。每个用户有一个私钥,用它进行 (46)。。。

    数字证书采用公钥体制进行加密和解密.每个用户有一个私钥,用它进行 (46) : 同时每个用户还有一个公钥,用于 (47) . X.509标准规定,数字证书由 (48) 发放,将其放入公共目录中,以供用 ...

  3. 如何在 Linux 上用密码加密和解密文件

    age 是一个简单的.易于使用的工具,允许你用一个密码来加密和解密文件.age 能帮你这样做.它是一个小型且易于使用的工具,允许你用一个密码加密一个文件,并根据需要解密. age 是一个简单的.易于使 ...

  4. tkinter实现文件加密和解密

    源代码:https://gitee.com/mydreamambitious/file-encryption-and-decryption 注:这个代码和界面是做好的,但是还在进行优化和美化中.但是在 ...

  5. python 加密和解密

    python 加密和解密 安装 linux pip3 install pycryptodome windows pip install pycryptodomex 创建密钥 from Cryptodo ...

  6. 探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!

    前言 对于数据加密和解密每次我都是从网上拷贝一份,无需有太多了解,由于在.net core中对加密和解密目前全部是统一了接口,只是做具体的实现,由于遇到过问题,所以将打算基本了解下其原理,知其然足矣, ...

  7. phpc.sinaapp.com 加密的解密方法

    原文:phpc.sinaapp.com 加密的解密方法 很简单,用类似phpjm的解密方式,替换掉_inc.php中最后一个return中的eval为print就出来了.

  8. 加密与解密以及openssl的应用

    废话不多说,直入主题. 本文主要简单介绍下: 一.数据加密的三种方式: 二.Openssl的基础应用以及创建CA证书与发证: 一.数据加密的三种方式: 1.对称加密:加密与解密方使用同一个算法, 将数 ...

  9. 加密与解密、OpenSSL(SSL/TLS)、OpenSSH(ssh)、dropbear

    下面介绍的是Linux的加密与解密.OpenSSL(SSL/TLS).OpenSSH(ssh).dropbear. 一.数据的加密与解密 1.进程间通信基础 (1).进程间通信方式 同一主机间进程间的 ...

最新文章

  1. 第二章 Servlet核心技术 实训二
  2. SBB:南土所褚海燕组-pH主导土壤中固氮群落的共存与装配
  3. jdk-11.0.2 64位最新版
  4. html制作主体部分,html – 使用CSS制作具有动态面板主体高度的面板填充父容器高度的其余部分...
  5. mysql中的编码问题_mysql存储乱码之编码问题
  6. Composition-based Multi-Relational Graph Convolutional Networks 多关系图神经网络 ICLR 2020
  7. 【转】C++从零实现神经网络
  8. GPS测量中所涉及的时间系统
  9. java实现微信支付之扫码支付
  10. 数学建模方法——斯皮尔曼相关系数及其显著性检验 (Spearman’s correlation coefficient for ranked data)
  11. 电子书极其格式的相关知识
  12. 如何成为一名云计算工程师
  13. linux fedora centos,linux – 我为什么要使用CentOS而不是Fedora
  14. VxWork学习笔记(一)
  15. sudo dolphin_如何使用Dolphin在PC上玩Wii和GameCube游戏
  16. 大学生简单个人静态HTML网页设计作品 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载 HTML5期末大作业
  17. 前端生成海报图:html2canvas 生成海报图/网页html转图片
  18. 计算机二级证书北京联合大学,北京联合大学是几本
  19. 【FPGA】初探FPGA —— 入门过程的分享
  20. 做线雕多久能恢复自然_做了线雕多久能完全恢复 线雕能保持多长时间

热门文章

  1. 大白用html5制作,别再选择单调的大白墙了,白墙这样设计,墙面丰富有质感!...
  2. 国货崛起,科技潮流——雷神星驰轮胎
  3. 深度学习21天——卷积神经网络(CNN):实现mnist手写数字识别(第1天)
  4. excel对不同岗位进行名次排序
  5. 商汤发布首份业绩报告,数字经济新拐点,商汤的价值逻辑变了吗?
  6. java全能速查宝典_Java全能速查宝典_IT教程网
  7. 笔记本联想(Lenovo)G40-70M加装内存和SSD固态硬盘
  8. 天云大数据_【案例分享】天云大数据最佳实践系列之——信用评分模型
  9. 关于汽车信息安全测试的公司-阿古斯
  10. c语言捕鱼达人源码,用捕鱼达人去理解C中的多线程.doc