Python 中的希尔密码2024 年 8 月 29 日 | 5 分钟阅读 引言密码学是编写代码或密码以保护双方之间通信的艺术。最流行的密码之一是Hill 密码,它是一种多字母代换密码。与用一个字母替换另一个字母的单字母密码不同,Hill 密码使用矩阵来加密和解密消息。在本文中,我们将讨论 Hill 密码及其在 Python 中的实现方法。 Hill 密码Hill 密码由Lester S. Hill 于1929 年发明,并以他的名字命名。它是一种使用矩阵来加密和解密消息的代换密码。Hill 密码是一种多字母密码,这意味着它操作的是字母组而不是单个字母。它通过将明文消息分解成固定大小的块,通常是2 或 3 个字母,并将每个块转换为数字矩阵。然后,将矩阵乘以密钥矩阵以生成加密消息,这也是一个矩阵。然后将加密消息转换回字母以生成密文。 Hill 密码基于线性代数和模运算。为了使用 Hill 密码,发件人和收件人必须就密钥矩阵达成一致。密钥矩阵必须是可逆的,这意味着它有一个矩阵的逆。矩阵的逆是乘以原始矩阵会得到单位矩阵的矩阵。单位矩阵是一个对角线为 1,其余为 0 的矩阵。可以使用矩阵代数计算矩阵的逆。 加密要使用Hill 密码加密消息,发件人会将消息分解成固定大小的块,通常是2 或 3 个字母。然后使用代换方案将每个块转换为数字矩阵。例如,A=0, B=1, C=2,依此类推。然后,发件人会将矩阵乘以密钥矩阵以生成加密消息,这也是一个矩阵。然后使用相同的代换方案将加密消息转换回字母。例如,0=A, 1=B, 2=C,依此类推。 下面是使用 2x2 密钥矩阵加密消息“HELLO”的示例 解密要使用Hill 密码解密消息,收件人会使用与发件人相同的代换方案将密文消息转换为矩阵。然后,收件人将矩阵乘以密钥矩阵的逆以生成解密的消息,这也是一个矩阵。然后,解密的消息会使用相同的代换方案转换回字母。 以下是使用相同的2x2密钥矩阵解密消息“DRBGC”的示例 在 Python 中实现现在我们已经了解了Hill 密码,让我们在 Python 中实现它。我们将使用NumPy 库来执行矩阵运算。 输出 Cipher Text: TUCWYJIXXNV 说明 在此程序中,encrypt 函数接收明文和密钥矩阵作为输入,并使用Hill 密码算法执行加密。该函数首先将明文转换为大写并删除任何空格。之后,如果明文的长度不是密钥矩阵大小的倍数,则通过附加'X'字符对其进行填充。 加密是通过将明文分成密钥矩阵大小的块来执行的。每个块根据代换字典转换为数字列向量。然后使用NumPy 的点积将密钥矩阵乘以块向量。得到的加密向量将模 26,以确保值保持在字母表的范围内。最后,使用逆代换字典将加密向量转换回字符串。 在示例用法中,明文“HELLO WORLD”使用2x2 密钥矩阵进行加密。然后将生成的密文打印到控制台。 此输出表示使用给定密钥矩阵的 Hill 密码加密输入明文“HELLO WORLD”的结果。 结论总而言之,Hill 密码是一种经典的加密算法,可用于安全地传输消息。它基于矩阵乘法,并使用密钥矩阵来加密和解密消息。Hill 密码是一种相对简单的算法,但与大型密钥矩阵结合使用时可提供高水平的安全性。在本文中,我们使用NumPy 库在 Python 中实现了 Hill 密码算法。该实现可以加密和解密任何长度的消息,并且可以使用任何大小的密钥矩阵。值得注意的是,Hill 密码的安全性取决于所用密钥的安全性,如果密钥选择不当,它可能会容易受到攻击。因此,在使用Hill 密码进行加密时,使用安全的密钥生成方法非常重要。总的来说,Hill 密码是一种强大的加密算法,可用于在各种应用中保护敏感信息。 下一主题Python 中的就地运算符 |
由于 Python 加速了交易过程,这种方法被称为自动化交易或量化交易。Python 的流行归因于其强大的库,如 Pyplot、TA-Lib、Scipy、NumPy、Zipline、Matplotlib、Pandas 等。什么是自动化交易?自动化交易通过执行预设的程序来接受和...
阅读 13 分钟
Python 中的 JSON Schema JSON Schema 是一种用于验证 JSON 文档的 Python 语言。它包含键/值对,其中每个键用于指定特定 JSON 数据的结构。使用 JSON Schema 可以提供易于理解、高质量的数据和文档。JSON Schema 是...
5 分钟阅读
在本教程中,我们将编写程序来创建桌面/笔记本电脑电池通知程序,并使用 Python 编程语言发送电池百分比通知。作为笔记本电脑用户,我们必须了解笔记本电脑的电池百分比。如果我们有一个程序能提醒我们...
5 分钟阅读
ImageMagick 是一款设计和开发的实用程序,用于将图像从一种格式转换为另一种格式。该工具因其支持多种图像格式以及精确而直接的执行方式而受到广大社区的支持。我们可以获取图像...
阅读 6 分钟
人工神经网络学习已成功用于学习实值、离散值或向量值函数,包括不同类型的特征景观、语音识别和学习机器人控制技术等问题。人工神经网络学习对训练数据中的错误具有抵抗力。生物学上由...组成这样的发现
阅读 4 分钟
你想盖一所房子。开始建造过程的第一件事是什么?你为你的房子制定一个计划。你按照计划建造房子。计划就像房子的蓝图...
阅读 6 分钟
在本教程中,我们将学习 Python Delorean 模块,该模块用于简化 datetime 对象。我们需要 datetime 模块来处理不同的时间和日期。有时这可能有点复杂和具有挑战性,在 Python 中处理 datetime 是...
阅读 3 分钟
在本教程中,我们将学习在 Python 中将字符串转换为整数的方法 - 在继续之前,让我们看一个例子 - a='Learning Python is fun' b= 20 #显示 a 和 b 的类型 print(type(a)) print(type(b)) 输出: <class 'str'> <class 'int'> 在上面的示例中,我们声明了变量 'a'...
阅读 3 分钟
在这个问题中,我们将得到两个已排序的数组。我们的任务是合并这两个给定的数组。然而,限制是,我们必须在不使用任何额外空间的情况下合并它们。因此,在对数组进行排序后,初始元素将位于...
阅读20分钟
本文将演示如何使用 PyQt5 构建倒计时计时器应用程序。使用计时器(一种用于测量特定时间间隔的特殊时钟)时,我们必须从给定时间倒计时直到它达到零。实现 GUI 的步骤...
5 分钟阅读
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India