哈喽大家好,我是一个新人年更 UP 主小麦,今天教大家怎么使用 Python 实现一个凯撒加密的小工具。

凯撒加密的原理

凯撒加密是由两个轮盘所组成的简易加密机制。其原理是将字母 A-Z 首尾相连,然后定义一个 0 - 25 的密钥值,并将明文的字母逐字向后推移到该值所对应的字母即可完成加密。

比如 key 值为 15,那么 A 在加密后对应字母的第 15 个字符,也就是 P。

我们只需要将加密后的信息和 key 值传递给对方,对方通过反向计算(也就是将偏移后的结果反向解码)即可破译该信息。

凯撒加密的例子

比如说我们需要加密 CAT 这三个英文字母,密钥为 15,那加密过程为:

  1. C 的字符下标为 2;A 的字符下标为 0;T 的字符下标为 19。
  2. 将 2,0,19 分别 + 15,得到 17,15,34;
  3. 通过字符表,我们可以得到密文为 R P 和编码为 34 的密文,这里我们发现 34 超过了字母对照表 25 的长度,所以我们需要将其减去 26,已得到对应的数值 8。
  4. 最后我们得出加密后的文本为:RPI。

凯撒解密的例子

刚才我们加密后的结果为 RPI,密钥为 15,那解密过程为:

  1. R 的下标为 17;P 的下标为 15;I 的下标为 8;
  2. 将这三个数值分别 - 15,得到 2,0,-7;
  3. 同理,我们的字符表范围在 0 - 25,所以少于 0,的数值我们需要对其 + 26;
  4. 最后得到数值为 2,0,19;解密后为 CAT。

    凯撒加密的实现

在实现之前,我们将整个业务逻辑梳理一遍

  1. 得到用户输入的字符串和 key 值;
  2. 如果用户输入的 key 值超过 25,提示错误,重新输入
  3. 逐字遍历该字符串中的字符;
  4. 如果是空格,则跳过;
  5. 将该字符的编码加上 key 的值
  6. 如果 key 值超过 25,则减去 26;
  7. 将加密后的字符添加到新的字符串上;
  8. 输出加密后的字符

进阶

将 key 从数值变成一个字符串