凯撒加密 Caesar Cipher
哈喽大家好,我是一个新人年更 UP 主小麦,今天教大家怎么使用 Python 实现一个凯撒加密的小工具。
凯撒加密的原理
凯撒加密是由两个轮盘所组成的简易加密机制。其原理是将字母 A-Z 首尾相连,然后定义一个 0 - 25 的密钥值,并将明文的字母逐字向后推移到该值所对应的字母即可完成加密。
比如 key 值为 15,那么 A 在加密后对应字母的第 15 个字符,也就是 P。
我们只需要将加密后的信息和 key 值传递给对方,对方通过反向计算(也就是将偏移后的结果反向解码)即可破译该信息。
凯撒加密的例子
比如说我们需要加密 CAT 这三个英文字母,密钥为 15,那加密过程为:
- C 的字符下标为 2;A 的字符下标为 0;T 的字符下标为 19。
- 将 2,0,19 分别 + 15,得到 17,15,34;
- 通过字符表,我们可以得到密文为 R P 和编码为 34 的密文,这里我们发现 34 超过了字母对照表 25 的长度,所以我们需要将其减去 26,已得到对应的数值 8。
- 最后我们得出加密后的文本为:RPI。
凯撒解密的例子
刚才我们加密后的结果为 RPI,密钥为 15,那解密过程为:
- R 的下标为 17;P 的下标为 15;I 的下标为 8;
- 将这三个数值分别 - 15,得到 2,0,-7;
- 同理,我们的字符表范围在 0 - 25,所以少于 0,的数值我们需要对其 + 26;
- 最后得到数值为 2,0,19;解密后为 CAT。
凯撒加密的实现
在实现之前,我们将整个业务逻辑梳理一遍
- 得到用户输入的字符串和 key 值;
- 如果用户输入的 key 值超过 25,提示错误,重新输入
- 逐字遍历该字符串中的字符;
- 如果是空格,则跳过;
- 将该字符的编码加上 key 的值
- 如果 key 值超过 25,则减去 26;
- 将加密后的字符添加到新的字符串上;
- 输出加密后的字符
进阶
将 key 从数值变成一个字符串
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 麦甜怪圈 Xiaomai Circle!