易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

一次性密码本算法   [复制链接]

    2023-07-17 08:51:12
    模块控件源码
    易语言资源网
    1075 次浏览
    来源链接

一次性密码本是有维纳(G.S.Vernam)于1917年提出的,并获得专利,因此又称为密码(Vernam cipher)(该专利已经过有效期)。一次密码本无法破译这一特性是由香农(C.E.Shannon)于1949年通过数学方法加以证明的。一次性密码本是无条件安全的,在理论上是无法破译的

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

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

为什么没有被普遍使用

密钥配送 最大的问题在于密钥的配送。

我们来设想一下使用一次性密码本进行通信的场景,发送者Alice使用一次性密码本生成密文发送出去。发送的密文即便被窃听者Eve截获也没关系,因为一次性密码本是绝对无法破译的。

接收者Bob收到了Alice发来的密文。Bob要想进行节目,就必须使用和Alice进行加密时相同的密钥,因此Alice必须将密钥发送给Bob,且该密钥的长度和密文是相等的。但这样就产生了一个矛盾,如果能够有一种方法将密钥安全送出去,那么岂不是也可以用同样的方法来安全地发送明文了么?

密钥保存 一次性密文本中,密钥的长度必须和明文的长度相等,而且由于密钥保护着明文的机密性,因此必须妥善保存,不能被窃听者窃取。不过,如果能够有办法安全保护与明文一样长的密钥,那岂不是就有办法安全保存明文本身了么?

无法破译

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

为什么呢?

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

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

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

缺陷

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

密钥太长

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

无法重用密钥

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

密钥的配送

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

密钥的保存

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

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

一次性密码系统在某些特定场景下可能是有效的,但在大多数实际应用中,更常见的是使用其他加密算法,如对称加密算法(如AES)或非对称加密算法(如RSA),以提供更高的安全性和更方便的消息传输

image.png



点我下载 (已有 52 次下载)

引用模块


源码文件名 模块文件名
一次性密码本.e
精易模块.ec


引用支持库


源码文件名 支持库文件名 支持库标识
一次性密码本.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0


[错误报告]   上一篇:yolo4验证服务器     下一篇:LibXL 导入有合并的excel表到高...