密钥密码学(一)(2)

简介: 密钥密码学(一)

密钥密码学(一)(1)https://developer.aliyun.com/article/1508649

4.3 转位

第二个主要的加密工具是转位,改变消息中字符的顺序。 最简单的方法是路由转位。 消息的字母按一定顺序写入���格中,然后按不同的顺序读取。 本节只是一个快速的概述。 全面讨论在第七章中。

例如,消息 THERE IS NO LOVE AMONG THIEVES,有 25 个字母,从左到右跨行写入到这个 5×5 网格中,并且从上到下跨列读出。在这个网格中,从上到下读取时,最左边的一列是TIOOI


将字母写入网格和从网格中读出字母的常见路径包括直接穿过行,要么向左要么向右,直接向上或向下列,交替向左和向右穿过行,交替向上和向下列,对角线从任何角开始,交替方向对角线,或者顺时针或逆时针螺旋,要么向内要么向外。路由置换密码评定为 One。

4.4 分数化

分数化是将字符分割成较小单位。我们已经看到一种方式,将字符表示为二进制数。该二进制数的每一位可以作为一个单独的单位进行操作,替换或转置。本节介绍了分数化。第九章和第十章有详细讨论。

表示字母为两位数字的古典方式是Polybius Square,由希腊历史学家波利比乌斯在公元前二世纪发明。这是一个使用关键字 SAMPLE 的 5×5 方格。请注意,字母 I 和 J 共享一个单元格,以便将 26 个字母的字母表适合到 25 个单元格的网格中。


由于 A 在第 2 行第 3 列,它由 23 表示。B 是 33,C 是 34,依此类推,通过 Z 由 21 表示。I 和 J 都由 44 表示。然后可以以各种方式进行替换、转置和重新分组这些数字。可以使用这个网格或另一个按不同混合顺序排列的 Polybius 方格将数字对转换为字母。

现代版本将每个字符替换为其 ASCII 或 UTF-8 代码中的十六进制表示。因此 A = 41,B = 42,C = 43,一直到 Z = 5A。这些十六进制数字可以类似地被替换、转置、重新分组并重新转换为字节。

一个有趣的例子是M. E. Ohaver在 1910 年发明的分数化摩尔斯。Ohaver 总是使用 M.E.,因为他不喜欢自己的名字,这个名字是 Merle。

历史注解

在克雷格·鲍尔的《秘密历史:密码学故事》第 241 页的脚注中提到,M.E. Ohaver 是多产的低俗小说作家肯德尔·福斯特·克罗森的化名之一。这是不正确的。克罗森有时使用希伯来语的 mechaber,מחבר,意思是 作者,的化名 M.E. Chaber。

在分数化摩尔斯中,字母按固定大小的组,比如 7,被替换为它们的摩尔斯代码等效项,使用/作为字母分隔符。然后,代码组的长度被反转,调整大小后的组被转换回字母。


摩尔斯电码是由阿尔弗雷德·维尔于 1840 年发明的,以他的雇主塞缪尔·F·B·摩尔斯的名字命名。

这种密码有几个明显的弱点。因为它使用标准的摩尔斯字母表,所以唯一的密钥是字母组的长度,这只需要几次尝试就能猜到。明文字母经常被它们自己替换。有 30 个不同的摩尔斯代码组,但只有 26 个字母,所以需要 4 个额外的字符。奥哈弗使用了日耳曼语的ä、ë、ö和ü。分数化摩尔斯评级为一级。

这些问题可以通过两个变化来部分修复:(1) 仅使用长度为 1、3 和 4 的摩尔斯组。有 26 个这样的组,完全符合 26 个字母的字母表。(2) 打乱字母表的顺序,或者等价地打乱摩尔斯代码组的顺序。我称这个增强版为FR-Actionated Morse。例如,使用关键词 MIXEDALPHBT 来混合字母表,摩尔斯组按标准顺序排列,你会得到


即使有了这些改进,FR-Actionated Morse 的评级仍然只有二级。

4.5 随机数生成器

随机数生成器可以是任何在给定范围内产生数字序列的东西。数字可以是单个位、8 位字节、十进制数字,或者是任何其他所需范围内的数字。例如,范围在 0 到 25 之间的数字,对应于 26 个字母表中的字母,对某些加密目的是有用的。本节介绍了该主题。完整的讨论在第十三章中。

重要的是要认识到“随机数”这种东西是不存在的。你不能说 51 是一个随机数,而 52 不是,反之亦然。但是,你可以说序列 51,52,53,54,…不是随机的。那个序列是完全可预测的。随机性是序列或生成器的属性,而不是序列中的个别数字的属性。说“一系列随机数”比说“随机数序列”更准确。

生成器可能是一种物理过程,比如宇宙射线、盖革计数器的嗒嗒声、计算机按键的精确时间、风中飘扬的旗帜、海浪拍打的水花或者人们赶着赶火车的景象。大多数物理来源都不够快以用于加密目的,但数字序列可能会被存储在计算机文件中以供日后使用。

生成器也可以是一个数学函数或计算机程序,在每次调用时产生一个数字。由数学算法产生的随机数被称为伪随机数,以区别于真随机数。它们被认为比真随机数弱,因为确定随机序列的一部分的对手可能能够计算出前后的数字,从而读取消息。真随机数永远不能由数学函数产生。在第 13.8 节中,我展示了生成密码安全的伪随机数序列的方法,设计用于防止对手扩展序列的部分。

伪随机序列和真随机序列之间的一个关键区别是,伪随机序列最终会重复,而真随机序列永远不会重复。序列在重复之前的项数称为其周期。例如,序列 3,1,9,2,4,3,1,9,2,4,3,1,9,2,4,…的周期为 5,以下划线标出。一般来说,周期越长,密码越强。

仅仅因为一串数字是随机的,并不意味着这些数字是等概率的。例如,假设你观察到穿过繁忙桥梁的汽车的颜色。颜色是随机的,但某些颜色比其他颜色更常见。白色、黑色、银色和红色比橙色、紫红色或嫩黄色要常见得多。同样,在 crap 游戏中,如果骰子是公平的,那么每次掷骰子都是随机的,然而掷出 7 的可能性是掷出 12 的六倍。

在第 13.14.1 节和第 13.14.2 节中,我讨论了如何“收获”这种序列中的随机性,以获得数字具有基本相等概率的序列。从现在开始,我将假定任何随机数生成器都产生具有相等概率的数字。这被称为均匀分布等概率分布。通过一个良好的随机数生成器,生成的数字对、三元组等也将具有均匀的概率,甚至可能达到八元组或更多。

4.5.1 链数字生成器

让我用纸和铅笔轻松完成的样本伪随机数生成器来结束这一节。不需要电脑。我们将其称为链数字生成器。首先写下任意 7 位的十进制数。这 7 位数字称为种子,或初始值,或初始化向量。它们可以被视为任何使用此生成器的密码的密钥,或密钥的一部分。要获得第一个伪随机数字,只需将第一个数字和最后一个数字相加。将这个新数字添加到序列中,并将第一个数字涂黑。所以,从 3920516 开始,我们将 3+6 加起来得到 9。


任何时候,如果总和超过 9,我们就去掉十位数。也就是说,加法是模 10 的。这有时被称为不进位加法。要获得第二个伪随机数字,我们重复这个过程。这里 9+9 得到 18。我们去掉十位数得到 8。


这个过程可以重复,以获得所需的伪随机十进制数字。


结果得到的伪随机序列是9800562199940232…

注意,如果种子中的所有数字都是偶数,则生成的所有数字都将是偶数。同样,如果所有数字都可被 5 整除,即为 0 或 5,则生成的所有数字都将是 5 的倍数。在这种情况下,周期最多只能为 128,因为种子中有 7 个数字,而且只有 2⁷ = 128 种 0 和 5 的组合。由于这种种子无法产生长周期,因此它们被称为不合格的。对于链式数字生成器,合格的种子必须至少包含一个奇数数字和一个不是 5 的倍数的数字。例如,2222225 是合格的种子,但 2222222 和 5555555 不合格。使用合格的 7 位数字种子,周期将始终为 2,480,437。

这个生成器具有自制伪随机数生成器的典型行为。有 10⁷个可能的 7 位数字种子。如果你从任意种子开始,生成器将循环一些数字序列,直到再次产生该种子,因此 7 位数字的集合被分割成几个离散的周期,每个周期都有自己的周期。如果选择一个合格的种子,那么周期将始终具有最大可能的 2,480,437 个数字的周期。这种长度有 4 个单独的周期,再加上一些由不合格种子产生的远比这个短的周期。

对于其他大小的种子,行为类似。即使最大周期非常短,也经常有很高的概率获得最大周期,因为可能有许多最大周期。此表显示使用合格种子获得给定长度周期的概率:

数字 周期 概率
4 1,560 100%
5 168 86.7%
6 196,812 99.974%
7 2,480,437 100%
8 15,624 98.817%
9 28,515,260 79.999%
至少 2,851,526 99.9988%
10 1,736,327,236 86.9%
至少 248,046,748 99.31%
至少 13,671,868 100%

表格显示,5 位和 8 位数字种子长度不安全。它们产生了大量非常短的周期。7 位和 10 位数字种子长度最好,因为你总是保证有一个长周期。

这个随机数生成器严格来说只是一个演示模型,只是展示了使用简单手工方法可以实现什么。它不适用于高安全性工作。

4.6 有用的组合,浪费的组合

本章的 4 种基本技术可以以无数种方式组合,我将在本书的剩余部分中进行探讨。然而,首先要认识到并非每种组合都是有益的。一些组合会增加工作量而不增加强度。

考虑一种一些初学者尝试的想法。他们对一条消息进行简单替换,然后对结果文本进行第二次简单替换,然后第三次,依此类推,进行 5、10,甚至 100 轮。这是一种浪费精力的做法。进行两次简单替换与进行一次相同,但使用不同的混合字母表,因此进行多次简单替换不会增加任何强度。这里有一个例证。两次替换使用了关键字 FIRST 和 SECOND。第三次替换等同于先进行第一次替换,然后进行第二次替换。


让我们来看一个例子。如果我们使用第一个替换对EXAMPLE进行加密,结果是IUXEJDI。如果IUXEJDI使用第二个替换进行加密,结果是CLQYOXC。你可以自行验证,使用等效替换对EXAMPLE进行加密会得到CLQYOXC

进行一次加密,然后再进行第二次加密被称为组合这两次加密。前面的例子表明,组合两个简单的替换只会产生另一个简单的替换。如果第一个加密使用了代码,那么在代码后面跟着一个密码被称为超加密。最常见的超加密形式是非进位加法,或者模 10 加法,其工作原理如下:


4.6.1 巴泽里 4 型密码

让我们看看相反的情况。让我们看一个使用替换步骤后跟着一个非常简单的置换产生了更强大密码的密码。

这种密码是由才华横溢、易怒且辱骂性的法国密码学家埃蒂安·巴泽里于 1898 年提出的。我不知道巴泽里给这种密码起了什么名字。我称之为Bazeries Type 4,因为这是他在 1890 年代向外交密码局提出的 4 种密码中的最后一种。这种密码可以很容易地手工完成。

巴泽里 4 型密码由一个简单的替换后跟着一个简单的置换组成,我称之为逐段反转。置换根据一个由小整数序列组成的密钥,对文本的短片段进行反转。这里有一个使用关键字 BAZERIS 混合替换字母表,以及关键字 4,2,3 进行置换的示例。


这种置换可以用来加强许多不同类型的密码,因此它值得拥有自己的名称。让我们称之为逐段反转。你可以通过混合一些正常顺序的文本段来加强这种置换,也许可以使用数值密钥中的负数。这里有一个使用数值密钥 3, 4, -3, 2 的示例。请注意,这个密钥等同于 3, 4, 1, 1, 1, 2。


密码学家们在密码局无法解决巴泽里斯提供的任何样本消息。尽管付出了相当大的努力,这些消息仍然在 40 年内未解决,直到著名建筑师和业余密码学家罗萨里奥·卡德拉解决了它们,并写了一本关于他是如何做到的书(巴泽里斯指挥官的军事密码,卡尔丹纳斯出版社:纽约,1938 年)。

然而,卡德拉无法直接解密这些消息。相反,他确定并利用了巴泽里斯从密钥生成替换字母表的方式中存在的弱点。如果巴泽里斯使用了更强大的方法来混合密码字母表,卡德拉就无法解密这些消息。因此,使用混合良好的字母表的巴泽里斯 4 型被评为五级。将两种分别评为一级的方法结合起来是相当不错的。

历史小贴士

卡德拉是哥伦比亚建筑学院的毕业生,所以他计划在哥伦比亚大学出版他的书。威廉·F·弗里德曼,当时是美国密码学家的院长,得知此事后,秘密阻止了出版。这再次证明了巴泽里斯 4 型密码的强大。

第五章:替换密码

本章包括

  • 简单替换和多字母替换密码
  • 使用 Kasiski 检测和重合指数解决多字母替换密码
  • 自密钥和流动密钥密码以及解决它们的方法
  • 模拟转子密码机

我们现在已经准备好更深入地探讨上一章描述的基本工具。在我开始描述所有不同的密码之前,让我明确陈述一下这些密码试图实现的目标。荷兰语言学家和博学家奥古斯特·克尔克霍夫斯(Auguste Kerckhoffs)首次在 1883 年的《军事科学杂志》上发表了这些原则的一对文章:

  1. 即使在理论上不可破解,密码在实践中也应该是无法破解的。
  2. 即使敌人了解了系统,这也应该成立。
  3. 密钥应该容易记忆(无需笔记)且易于更改。
  4. 应该能够通过电报传输加密的消息。
  5. 仪器和文件应该方便一个人携带和操作。
  6. 密码应该易于使用;不应有复杂的规则或计算。

规则 4 可能会更新为“数字方式传输加密的消息”。否则,这些原则今天仍然像 1883 年一样有效。

第二个原则的一个推论是,密码的强度应该完全取决于密钥。克尔克霍夫斯还相信只有密码学家有资格评判密码的安全性。太多时候,选择使用哪种密码的决定是由缺乏密码学专业知识的政府官员做出的,有时会造成灾难性的后果。

5.1 简单替换

简单 替换,也称为单字母替换,是你在报纸和杂志的谜题部分看到的熟悉类型的密码。在简单替换中,消息中的每个字母都被另一个字母一致且均匀地替换。因此,如果字母 M 在一个地方被 T 替换,那么消息中的每个 M 都将被 T 替换,而密码文中的每个 T 将表示一个 M。

由于大多数人熟悉解决简单替换密码的技巧,我只会简单提一下:字母频率、首字母频率、末字母频率、双字母频率、字母对频率、短单词、常见前缀和后缀、元音和辅音的分布、模式单词以及利用标点符号。

对于报纸中的简单密码,通常只需要查看短单词。如果你发现 AB 和 CBA,这些单词可能是 TO 和 NOT,而 AB 和 BAC 最常见是 OF 和 FOR。模式 ABCA 很可能是 THAT,ABCDC 暗示着 THERE,而 ABCDB 可能是 WHICH。如果你在互联网上搜索,你可能会找到出售模式单词列表的网站,或者会根据你提供的模式找到匹配的单词的网站。

对于更难的密码,像 FOXY PIXY MANX AXED TOXIC LUXURY ONYX SPHINX 这样的文本,需要更有组织的方法。

我将使用以下样本密码演示该过程。已知语言为英语。文本有 73 个字母和 11 个单词,平均每个单词长度为 6.64 个字母,而正常的英语为 5.0 个字母。缺少少于 5 个字母的短单词以及缺少模式单词表明这个密码已经被故意构造得很困难。


第一阶段是识别元音和辅音。首先计算每个字母的出现次数以获得频率计数。在样本密码中,A 的字母计数为 0,B 为 3,C 为 3,以此类推。完整的频率计数如下:


注意这里只有两个高频字母,LS,出现的频率分别为 8 和 7。在正常的英文文本中,元音字母占 40%。这个百分比很稳定,即使字母频率被故意操纵也通常保持不变。在这个密码中有 73 个字母,应该有 29 个元音。这几乎要求 LS 都代表元音,除非频率被严重扭曲。

接下来,你需要制作一个联系表格,将字母垂直地列在页面的中心。在密码中出现的每个不同的字母都有自己的行。在每一行上,出现在中心字母之前的每个字母都列在其左侧,而出现在中心字母之后的每个字母都列在其右侧。例如,表格的第一行,EO B DWZ,表示在密码中字母 B 分别被 EO 前导一次,分别被 DWZ 后导一次。以下是这个密码的完整联系表格(为节省空间显示为 3 列)。


联系表格用于识别元音和辅音。一般来说,元音与左右两侧的字母有广泛的联系,而辅音则往往与有限数量的不同字母有联系。从联系表格中我们可以确定 4 个可能的元音,LQSV,以及 4 个可能的辅音,EORU。让我们用 ° 标记这些元音字母,用 ˟ 标记这些辅音字母,并看看分布是否合理。


在第 3 个单词EYXDO、第 7 个单词KIGXG和第 8 个单词YIWZ中都有 3 个长的没有元音的字母串。这表明I和/或X可能是元音。虽然它们都有很多不同的接触点,但X代表元音的可能性极小,因为那样的话第 11 个单词将以 3 个元音字母开头并以元音结尾。这在英语中很罕见。我找到的唯一例子是 OUIJA。(SQXMV不能是 AIOLI,因为 I 重复了。)因此,I很可能是元音,而X是辅音。

让我们再次尝试区分元音和辅音。在密码中有 5 对暂定元音,VLVSVQQLSQ。在英语中,双元音并不常见,因此很可能VQ实际上是辅音。很可能不是Q,因为那样的话第 10 个单词将以 5 个辅音结尾。我知道的唯一这样的 6 个字母单词是 ANGSTS。

让我们将I作为元音,将VX作为辅音,看看我们的情况如何。


看起来是正确的。从第 3 个单词中,我们现在可以确定D是元音,从第 11 个单词中,M很可能是元音。现在所有 6 个元音都已找到,所以其他每个字母必须是辅音。以下是辅音和元音的完整分布。


第二阶段是识别单个字母。以下字母接触表显示了英语字母的接触特征。不同的语言会有不同的特征。例如,字母 M、V 和 Z 通常都是前导和后跟元音,而字母 N 通常是前导元音,但后跟辅音。我使用古腾堡计划的英语语料库编制了这个表。


在密码中,有一个很好的 H 明文候选者,即密文U。然而,U在以 US 结尾的双字母组中出现两次,因此这是不太可能的。

在密码中,有两个强有力的 N 候选者,即密文EOEO都代表总是由元音前导和辅音后跟的辅音。然而,O是更强的选择,因为它的频率更高,并且因为它在单词ZLORUS中的两个已知辅音之前。在英语中,3 个辅音组合通常以 N 开头,例如NSTNTH。更有可能O代表 N。这产生了


现在可以尝试找到符合某些模式的可能单词。我找到了 67 个符合ZLORUS ˟°N˟˟°的单词。其中 32 个以 E 结尾,27 个以 Y 结尾。我找到了 37 个符合SQXMV °°˟°˟且不包含 N 的单词。其中 15 个以 Y 开头,但只有 1 个以 E 开头。因此,密文S最有可能代表明文 Y。这给了我们


密文单词 IVQORZLORUS 都包含双字母 OR。让我们试着识别一下。知道 IVQOR °˟°N˟ 不含有 Y,剩下的有可能的单词只有 24 个。其中,有 12 个以 G 结尾,有 8 个以 S 结尾,因此密文 OR 可能是 NG 或者 NS。现在,对于 ZLORUS ˟°N˟˟Y 的可能明文单词减少到了 26 个。在这些中,第四个字母是 G 的有 8 次,是 T 的有 6 次,但是只有 1 次是 S。因此,密文 OR 最可能的选择是明文 NG。现在我们有了


对于第一个单词 RULEYS 有 8 种可能性。这些只包含双字母 UL 的 6 种可能性。对于这些选择中的每一个,让我们来看看单词 ZLORUS 的可能性。


选择 ZLORUS = JUNGLY 可以立即被排除,因为 KSYIWZ 将呈现出 ˟Y˟°˟J 的形式。在英语中没有这样的单词。这意味着 RULEYS 表示 GRUMPY,ZLORUS 表示 HUNGRY。填入这些新字母后得到


其余的字母可以凭眼识别填入。现在显然第二个单词是 PUDGY,第三个单词是 BUMPKIN,这使得第八个单词成为 BYPATH,等等。

完成的密码读起来是 GRUMPY PUDGY BUMPKIN CLUMSILY STUMBLED ALONG BACKCOUNTRY BYPATH,HUNGRY UNSHOD YOKEL。

简单替换被评为 One。当字母频率和接触频率被故意扭曲时,就像这个例子一样,评级可以达到 Two 或可能 Three。这是一个很好的谜题,但对于一般通信是无用的。

5.2 混合字母表

简单替换需要一个混合字母表。有几种传统的纸笔方法可以做到这一点。获得混合字母表的一种方法是使用一个关键词。在最简单的情况下,您只需从某个位置开始写入关键词,然后在其后填入剩余的字母,根据需要进行环绕。剩余的字母可以向前或向后填写。以下是三个示例:


这种方法最早由 Argenti 家族使用,他们是约 1600 年教皇和主教的密码秘书。这些字母表混合得不太好。一种稍微好一些的方法是使用两个关键词,就像这样:


列混合

将字母写入一个块中。将关键词写在顶行,其余的字母写在需要的行数中。较长的关键词可以提供更好的混合效果。然后从块中读出字母,沿着列向下读取。在这个例子中,关键词 SAMPLE 已经写在顶行。第一列向下读取是 SBIRY,第二列是 ACJTZ,依此类推。如果愿意,可以交替地沿着列向上和向下读取,或者使用其他路径。


SkipMix

在我上高中的时候,我发明了另一种适合纸笔密码学的方法,我称之为SkipMix。它使用一串称为跳数的小数字作为混合字母表的密钥,例如 3, 1, 4。从标准字母表开始。跳过 3 个字母并取下一个字母,即为 D。


删除该字母,然后跳过 1 个字母并取下一个字母,即为 F。


删除该字母,然后跳过 4 个字母并取下一个字母,即为 K。


然后重复 3,1,4 的循环。跳过 3 个字母并取下一个字母,即为 O。


继续重复键数的循环,直到选择了所有 26 个字母。生成的混合字母表是


SkipMix 可以与关键词一起使用。假设关键词是 SAMPLE。将每个字母替换为它在字母表中的位置,即 19,1,13,16,12,5。可选地,将任何 2 位数替换为其各位数字,即 1,9,1,1,3,1,6,1,2,5。使用这串跳数作为混合密钥。注意,0 是一个有效的值。

SkipMix 非常适合计算机使用。在这种情况下,字母表是 256 个不同的 8 位字符代码。跳数可以是从 0 到 255 的任何整数。数字密钥仍然可以由关键词派生而来。使用关键词而不仅仅是一串整数的优点是人们更容易记住和准确输入。再次假设关键词是 SAMPLE。这些字母在 ASCII 码中的数值等价于 83, 65, 77, 80, 76 和 69。这些值落在从 65 到 90 的窄范围内,这导致混合程度较低。为了将字母代码分散到更广泛的范围内,它们可以乘以某个常数值模 256。乘数可以是介于 7 到 39 之间的任何奇数。例如,关键词 SAMPLE 的 ASCII 码乘以 17 模 256 的结果是 131, 81, 29, 80, 12 和 149。这覆盖了一个范围为 149-12 = 137 的范围,远比原始范围 83-65 = 18 要宽。

跳数仍然只有 26 个可能的值。获得更大的值集合的一种方法是将相邻的数字进行模 256 的乘法。然后,跳数序列为 83×65, 65×77, 77×80, 80×76, 76×69 和 69×83,全部取模 256。因此,83×65 = 5395≡19 (mod 256)。数字密钥变为 19, 141, 16, 192, 124, 95,覆盖了范围 192-16 = 176。

产生更大的跳数集合的另一种方法是将关键词的第一个字母乘以 7,第二个字母乘以 9,第三个字母乘以 11,依此类推,所有乘法都在模 256 下进行。

由于将关键词转换为数字密钥将由计算机而不是人类操作员完成,因此可以使用任意复杂的计算。我建议使用二次函数而不是线性函数,以使对手在获得一些消息的明文后更难推断关键词。例如,如果 N[i]是数字密钥的项,K[i]是关键词中字符的数字值,则一个合适的函数可能是


当下标超过关键词的长度时会循环。例如,如果关键词有 10 个字符,则 K[11]会循环到 K[1],K[12]会循环到 K[2],依此类推。

函数 K[i]K[i+1]+K[i+2]K[i+3]的强度不会那么强。如果关键词的长度为 L,则只会有 L 个不同的二次项。艾米莉可以将这些视为 L 个变量,并解出一组 L 个线性方程以找到 L 个乘积 K[1]K[2],K[2]K[3],K[3]K[4],… K[L]K[1]的值。然后很容易找到各个 K[i]的值。*

在本书中,我展示了字母表与简单关键词混合在一起,这样您可以一目了然地看到它们是如何形成的,例如,字母表

样本 BCDFGHIJKNOQRTUVWXYZ

这非常薄弱。实践中不要这样做。我在这里这样做是为了帮助读者。由于您不希望帮助您的对手,始终使用混合良好的字母表,使用列混合、SkipMix 或其他强大的混合功能。有关其他方法,请参见第 12.3.8 节。

密钥密码学(一)(3)https://developer.aliyun.com/article/1508651

相关文章
|
1月前
|
算法 数据安全/隐私保护
对称密钥加密算法和公开密钥加密算法有什么区别
【4月更文挑战第19天】对称密钥和公开密钥加密算法各有特点:对称密钥加密速度快,适用于大量数据,但密钥管理困难;公开密钥加密安全性高,密钥管理方便,但速度慢,常用于数字签名和身份验证。两者在不同场景下有不同优势。
93 6
|
1月前
|
存储 安全 算法
密钥密码学(一)(4)
密钥密码学(一)
24 2
|
1月前
|
存储 安全 算法
密钥密码学(一)(1)
密钥密码学(一)
14 1
|
1月前
|
存储 人工智能 安全
密钥密码学(一)(3)
密钥密码学(一)
24 1
|
1月前
|
开发框架 算法 .NET
密钥密码学(三)(4)
密钥密码学(三)
25 0
|
1月前
|
机器学习/深度学习 人工智能 算法
密钥密码学(二)(4)
密钥密码学(二)
21 0
|
1月前
|
存储 算法 数据可视化
密钥密码学(二)(1)
密钥密码学(二)
28 0
|
1月前
|
传感器 算法 安全
密钥密码学(三)(3)
密钥密码学(三)
12 0
|
1月前
|
存储 人工智能 安全
密钥密码学(二)(2)
密钥密码学(二)
22 0
|
1月前
|
机器学习/深度学习 算法 前端开发
密钥密码学(三)(2)
密钥密码学(三)
22 0