美文网首页区块链大学程序那些事区块链研习社
一次性密码本-绝对不会被破译的密码

一次性密码本-绝对不会被破译的密码

作者: flydean程序那些事 | 来源:发表于2019-06-24 11:04 被阅读3次

一次性密码本

一次性密码本即Vernam Cipher,是由Gilbert Vernam在1917年, 开发的一种加密算法。

之所以叫做一次性密码本,是因为加密所用的密钥是一次性的,即密钥只会使用一次,不会出现因为密钥泄露导致之前的加密内容被解密。

即使密钥被泄露了,也只会影响一次通信过程。

加密之前的准备

通常来说,如果我们想将一个消息加密传输需要做什么工作呢?

在现代计算机社会,大家都知道计算机只能表示0,1这两个数字,那么如果传输文字,则需要将文字转换为对应的二进制编码。

现有的编码规则有很多,比如:ASCII,Unicode等,在后续的文章中我们会做介绍。

同样的,对于编码过后的文字进行加密,就是将编码过后文字的二进制通过一定的bit运算,而得到加密后的结果。

一次性密码本的加密方式

回到一次性密码本,他的加密方式非常简单,就是将明文和一串随机的二进制进行XOR运算。这个随机的二进制数可以通过不断的抛掷硬币来产生(正面表示1,反面表示0):

  1. 将明文编码,即转换为二进制。
  2. 生成和明文二进制位数相同的密钥。
  3. 将明文和密钥的二进制进行XOR操作,生成最后结果。

一次性密码本的解密

加密之后我们怎么去做解密呢? 我们先看一下XOR的特性。

XOR是指异或操作,比特位上的数字一样,异或的结果就是0,比特为上面的数字不一样,异或的结果就是1。

举个例子:
0 XOR 0 = 0
0 XOR 1 = 1
1 XOR 0 = 1
1 XOR 1 = 0

异或的一个非常重要的特性就是可逆,即:
A XOR B= C ,则 C XOR B = A 。

那么通过原文和密钥异或得到的结果,可以通过将结果和密钥再次异或操作得到原文。

这就是一次性密码本的解密过程:将密钥和结果进行异或。

无法破译

虽然一次性密码本非常简单,但是一次性密码本是无法破译的,这个破译并不是指现有的计算能力不够,而是指即使拥有无穷大的计算能力也无法破译。

为什么呢?

假如你拿到了加密的结果,然后遍历等长的密钥进行暴力破解,最后你会生成原文,假设这个原文长度是128bit,那么就可以生成2的128次方个原文,即128bit长度的原文的所有组合排列。

即使这些组合里面出现了一些有意义的文字,但是你不能确定这些文字是不是就是原文,因为在所有的组合排列中可能生成多个有意义的文字。

所以这种解密是无意义的,就像是我知道了原文的长度,然后自己构造这个长度的原文。

缺陷

既然一次性密码本这么好,那么为什么我们在实际的工作中很少用到呢?

  1. 密钥太长

一次性密码本是用与原文等长的密钥做异或得到的,如果原文很大,那么相应的密钥也非常大。

  1. 无法重用密钥

每个密钥只用一次,即是缺点也是优点。意味着我们每次都要不停的更换密钥,增加了复杂性。

  1. 密钥的配送

因为密钥和原文以及密文都是等长的,目标端如果想解密就必须拿到密钥,如果能够机密的传输密钥给目标端,那为什么不直接将原文机密的传送给目标端呢?

  1. 密钥的保存

每次加密都需要换一个密钥,这意味着每一个明文都需要保存一个同样长度的密钥,如果明文已经可以很好的保存了,那何必多做一步加密呢?

虽然一次性密码本有这么多缺点,但是他给其他的加密算法以启发,于是产生了很多个变种,后面我们会介绍更多的加密算法。

相关文章

  • 一次性密码本-绝对不会被破译的密码

    一次性密码本 一次性密码本即Vernam Cipher,是由Gilbert Vernam在1917年, 开发的一种...

  • One Time Pad

    什么是One Time Pad? 密码学中有一种加密方法叫做 One Time Pad,翻译过来叫做“一次性密码本...

  • 艾伦·图灵:机器智能与人类思维边界的孤独守望者(下)

    二战英雄——凡人之躯战胜恶魔 英国的密码破译部门起源于一战时期,当时的苏联打捞到德国的密码本,转交到英国手中,随后...

  • 分组密码工作模式

    电子密码本(ECB) 最简单的加密模式即为电子密码本(Electronic codebook,ECB)模式。需要加...

  • Nginx 配置 Basic Auth

    环境准备 在开始之前,需要httpd-tools来生成密码本。 生成密码本 敲了该命令后,会提示输入密码 配置Ng...

  • Python暴力破解wifi密码

    生成密码本 ​ 对于这个密码本就是我们常用的密码,一般是有数字、字母和符号组成。而现在呢?我们就用P...

  • Ideas

    加密密码本 这是一个看起来很简单的程序,就是记录账号和密码的密码本,只不过要求了较高的安全性,除了进...

  • 密码本

    前两天,我买了一个密码本。密码是保密的。它可以用来做算式题和记作业。外边的封皮是松鼠形状,拿着一根木头棍带一个叶子...

  • 密码本

    星期三的下午,妈妈给我们买了一个密码本,我的密码本的是蓝色的,上面画着绝地求生的图案,有两个战士,扛着枪很威武。本...

  • 老君详谈地球游戏“诡道”的秘密

    其实,地球游戏,我们就是破译它。你们现在在破译地球游戏的密码。密码很简单,不是密码多的很,真正的那组密码就在你那儿...

网友评论

    本文标题:一次性密码本-绝对不会被破译的密码

    本文链接:https://www.haomeiwen.com/subject/zdjnqctx.html