无名商城论坛

搜索
查看: 211|回复: 0

[其他技术] 【Python与密码学①】凯撒密码(Caesar)

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
32464
发表于 2022-5-8 16:19:52 | 显示全部楼层 |阅读模式
——————————————————————
——————————————————————
  古典密码编码方法归根结底主要有两种,即置换和代换。

  把明文中的字母重新排列,字母本身不变,但其位置改变了,这样编成的密码称为置换密码。最简单的置换密码是把明文中的字母顺序倒过来,然后截成固定长度的字母组作为密文。

  代换密码则是将明文中的字符替代成其他字符。

        而今天要讲解的凯撒密码就是“置换”
——————————————————————
——————————————————————

                      ——————————
                     |           凯撒密码            |
                      ——————————

凯撒密码的历史我就不做过多讲解了,有兴趣的可以自行百度[蜷]直接上干货

——————
[揪耳朵]应用场景
——————

通过这种方法将信息加密,使得通信过程的安全性大幅提高,比如双方进行信息传递时,如果信息被人从传递过程中拦截下来,就会给通信双方带来不可预估的损失,而如果信息被加密了,在没有密钥的情况下,拦截方将很难获知真正的信息

——————
[摸]加密原理
——————

凯撒密码通过“置换”的方式进行加密,对加密的明文(需加密的信息)按照字母表顺序进行“偏移处理”,偏移量被称为 密钥

比如“python”通过密钥为3的 凯撒加密后 就会变成“sbwkrq”,这是因为密钥为3,那么往后偏移三个单位为p→q→r→s,y→z→a→b,t→u→v→w,h→i→j→k,o→p→q→r,n→o→p→q

——————
[人呢]解密思路
——————

既然加密过程是将明文偏移得到密文,那将得到的密文 偏移回去 不就可以得到原来的明文了吗?

—————————
[捏脸]Python实现加密
—————————

既然知道了思路,那么就简单了,首先我们来看如何加密,Python脚本实现(图1):

str = input('请输入你要加密的字符串:')
num = int(input('请输入你的密钥:'))
if num>26:
    num = num % 26
for i in str:
    if ord(i)>122-num:
        jia = ord(i)-26+num
    else:
        jia = ord(i)+num
    print(chr(jia),end='')

输入“测试字符”试试(图2)
此时,明文是 ceshizifu
密钥是 6
加密后的密文是ikynofola

—————————
[人呢]Python实现解密
—————————

我们接着上一个例子来看,如果我们 收到了别人发给我们的一段密文 和他给我们的密钥 想要破解得到明文,那么可以这样来做(图3):

str = input('请输入你要解密的字符串:')
num = int(input('请输入解密密钥:'))
if num>26:
    num = num %26
for i in str:
    if ord(i)<97+num:
        jie = ord(i)+26-num
    else:
        jie = ord(i)-num
    print(chr(jie),end='')

输入上个例子得到的密文和密钥试试(图4)
此时,密文是ikynofola
密钥是6
解密后的明文是ceshizifu

——————
    [冷笑话]注意
——————

上面的脚本我是按照字符对应的ASCII码来写的,所以如果字符中出现小写字母之外的字符,就会加解密出现其他有干扰性的字符,那就不能用这两个脚本进行加解密了,但也并不是说不能用Python加解密了,而是说要重新写脚本[赖皮][赖皮]

——————————————————————
——————————————————————

——————
     [抓]拓展
——————

1.字符串里面有大写字母怎么办?

2.字符串里面有除字母以外的其他字符怎么办?

3.不知道密钥怎么解密?

4.如何进一步提高凯撒密码的安全保障性?

5.你们看完都不关注凡汐怎么办?[不要嘛]

————————
[点头]答案
————————

答案将在五一期间在评论区更新[点头]

———————————————————

本人菜鸡,如有不对,欢迎指正

——————

原创,未经本人允许,禁止转载[玫瑰]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表