凯撒加密算法

本文介绍了凯撒加密算法,并分享了使用Python实现该算法的代码片段,通过实例展示了算法的趣味性和古人的智慧。

凯撒加密算法

真是好奇心害死猫!!!

今天周六闲着没事,看到一个up主在说凯撒加密,觉得非常有意思,就用python实现了一下,确实挺好玩的,分享给大家!


凯撒加密算法:凯撒加密法,或称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。
它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。
实现思路:首先是根据定义一个英文字母列表作为加密解密的密码母本,统计明文或密文列表的长度,从头到末开始索引,
利用index方法返回明文/密文元素在密码母本的位置,根据位置进行加密解密计算,定义一个容器来放置每次求出的字符,
最后组成明文或密文进行输出
功能:
1、输入输出
2、选择mode(加密/解密)
3、选择加密方向
4、选择位移值即加密的量
基本语法:
1、输入,输出语句
2、控制语句:条件语句,循环语句
3、序列元素
4、列表的读取,方法等

代码片段

mode = input("请问你要加密还是解密(加密请输入:e,解密请输入:d)?")
direction = input("请选择你的加密方向(r:右移,l:左移)")
algorithm = int(input("请选择密码算法(即加密位数):"))
#这里定义了一个列表元素,相当于一个密码本供下面切片访问
translation = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r'
    ,'s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
if direction =='r':
    if mode == 'e':
        clearText = list(input("请输入你要加密的明文:"))
        length = int(len(clearText))#统计明文列表的长度作为判断条件
        SSL1 = ''#定义空字符,作为密文的容器
        i=0#定义索引值
        while i<=length-1:
            clearvalue = clearText[i]
            valuePlace = int(translation.index(clearvalue))
            #返回元素出现的位置
            solitude = translation[int(valuePlace + algorithm)]#通过位置加上密位数索引出加密字符
            SSL1 += solitude
            i += 1
        print('你的密文是:%s' % SSL1)

    elif mode == 'd':
        cipherText = list(input("请输入你要解密的密文:"))
        length = int(len(cipherText))
        SSL2 = ''
        i=0
        while i<=length-1:
            nightvalue = cipherText[i]
            valuePlace = int(translation.index(nightvalue))
            solitude = translation[int(valuePlace - algorithm)]
            SSL2 += solitude
            i += 1
        print('你的明文是:%s' % SSL2)
    else:
        print("请检查你的输入")

在这里插入图片描述

最后,不得不说古人还是非常有智慧的,凯撒大帝应该是个数学家,站在前人的肩膀上果然看的更远!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值