【发布时间】:2018-03-17 01:17:54
【问题描述】:
我正在阅读来自维基百科的Hill Cipher 加密算法。我看到我有一个作为矩阵的键,它必须乘以值的矩阵。但是有两件事我不明白。
我不知道 (mod 26) 的平均值。我知道它是模 26,但我不知道它适用于什么?
至于第二个问题,我不明白矩阵 [15 14 7] 是从哪里来的?
任何好的解释都将受到高度赞赏。
【问题讨论】:
标签: matrix encryption
我正在阅读来自维基百科的Hill Cipher 加密算法。我看到我有一个作为矩阵的键,它必须乘以值的矩阵。但是有两件事我不明白。
我不知道 (mod 26) 的平均值。我知道它是模 26,但我不知道它适用于什么?
至于第二个问题,我不明白矩阵 [15 14 7] 是从哪里来的?
任何好的解释都将受到高度赞赏。
【问题讨论】:
标签: matrix encryption
26 是字典的长度,恰好是英文字母(A 到 Z)的长度。使用模运算符,您可以将矩阵乘法(加密)的每个可能输出映射到字母表中的一个字母(834 = 2 (mod 26),即 C),这样您就可以将加密消息存储为以下形式一串字母。
[15 4 7] 来自矩阵[67 222 319] (mod 26):
三等号表示矩阵 [67 222 319] 与 [15 4 7] 模 26 一致。左侧矩阵中的每个元素也应与右侧矩阵中的相应元素模 26 一致,所以您将模运算符应用于左侧矩阵中的每个元素以获取右侧矩阵中的每个元素。
【讨论】:
n x n,其中n是字符串的长度。如果您收到消息Imalongmessage,则您的矩阵将变为14 x 14 矩阵,并且相乘有些复杂。从头开始完全可行,但我建议你要么找到一个矩阵代数库,要么制作一个基本的Matrix 类,它可以与另一个Matrix 类相乘。这并不难做到。
因此,您将两个矩阵相乘,然后得到加密矩阵。然后,您将结果矩阵的每个值取模 26。
mod 26 只是一般的意思,“这个值是模 26。”
【讨论】:
嗨,这就是所谓的模运算,因为字母表中有 26 个字母 0 是 A 1 是 B ... 25 是 Z 所以 27 是什么字母不清楚这就是为什么你用模运算符 % 环绕数字或 mod 每次你得到一个大于或小于 25 的数字然后 0 你用 mod 26 环绕在这方面 27 是 B 因为 27 mod 26 = 1 矩阵 [15 14 7] 来自 [67 222 319] 因为 67 mod 26 = 15 222 mod 26 = 14 和 319 mod 26 = 7 :)
【讨论】: