Python 中的 Caesar 密码

17 Mar 2025 | 4 分钟阅读

在本教程中,我们将探讨一种称为凯撒密码的加密方法。它是密码学的一部分。

引言

在这种技术中,每个字母都被替换为字母表中固定位置向前或向后的字母。例如 - 字母 B 会被替换为向前两个位置的 D。D 会变成 F,依此类推。这种方法是以古罗马著名人物尤利乌斯·凯撒的名字命名的,他用它与官员沟通。

有一种算法用于实现它。让我们来理解一下。

凯撒密码算法的特点

该算法包含一些特征,如下所示。

  • 这种技术在加密方面非常简单。
  • 每个文本都替换为字母表中固定位置向前或向后的字母。
  • 这是一种简单的替换密码。

需要一个整数值来定义文本中每个向下移动的字母。这个整数值也称为位移。

我们可以通过首先将字母转换为数字来表示这个概念,根据模式,A = 0, B = 1, C = 2, D = 3……Z = 25。

可以使用以下数学公式来移动 n 个字母。

如何解密?

解密与加密相同。我们可以创建一个函数来执行相反方向的移位来解密原始文本。但是,我们可以使用模运算下的密码的循环属性。

Cipher(n) = De-cipher(26-n)

可以使用相同的函数进行解密。但是,我们将修改移位值,使 shifts = 26 - shift

Caesar Cipher in Python

让我们理解以下示例 -

示例 -

输出

Plain txt : CEASER CIPHER EXAMPLE
Shift pattern : 4
Cipher: HJFXJWsHNUMJWsJCFRUQJ

上面的代码逐个字符遍历。它根据文本加密和解密过程的规则转换每个字符。

我们定义了几个特定的位置集,生成了密文。

凯撒密码算法的破解

我们可以通过各种方式破解密文。其中一种方法是暴力破解技术,它涉及尝试所有可能的解密密钥。这种技术并不难,也不需要太多努力。

让我们理解下面的例子。

示例 -

输出

Hacking k #25: rHNUMJWrIJRTHJFXJWHJFXJW

置换密码

置换密码算法是一种将明文中的字母顺序重新排列以形成密文的技术。该算法不支持实际的明文字母。

让我们通过一个例子来理解这个算法。

示例 -

我们将采用一个简单的例子,称为列置换密码,我们将明文中的每个字母以指定的字母宽度水平书写。垂直书写的文本就是密文,形成了一个完全不同的密文。

让我们举一个明文,并应用简单的列置换技术,如下所示。

Caesar Cipher in Python

我们将明文水平放置,密文以垂直格式创建为:hotnejpt.lao.lvi. 要解密此文本,接收者必须使用相同的表格将密文解密为明文。

代码 -

让我们理解下面的例子。

解释 -

在上面的代码中,我们创建了一个名为 split_len() 的函数,该函数将明文字符分成块,并以列或行格式放置。

encode() 方法使用指定列数的密钥创建密文,我们通过读取每一列来打印每个密文。

注意 - 置换技术旨在显著提高加密安全性。密码分析家发现,使用相同的置换密码重新加密密文可以提供更好的安全性。


下一个主题Python 中的分词器