前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个简单的加密算法

一个简单的加密算法

作者头像
老肥码码码
发布2020-01-17 15:12:44
1.3K0
发布2020-01-17 15:12:44
举报

凯撒加密是一种简单的加密技术。据记载,这是凯撒大帝曾经用来对军事信息进行加密的方法。

这是一种替换加密的技术。想要传递的密文的所有字母都在字母表中向后或者向前移动一个固定数值的距离,形成明文。

举个?

当偏移量是5的时候,密文中所有字母a都被替换成f,b都被替换成g,z都被替换成e,以此类推。

需要注意的是这是一个循环的过程,z后面接着a,因此需要模26,加密和解密是一个相反的过程,一个加上偏移量,另一个就减去偏移量,反之亦反。

知道原理后,我们来用Python实现一下这个凯撒加密吧~

我们可以默认偏移量是5(当然这个参数可以设置),遍历密文字符串,如果当前字符不属于字母,我们便不做改动。

当这个字符是字母时,我们需要按照大小写来分别看待,大写字母共用一套密码,小写字母共用一套密码。

Python的内置函数 ord() 可以输出字符的ASCII码,而 chr() 则正好相反,可以输出ASCII码对应的字符。

代码语言:javascript
复制
def enc(string,offset=5):
    
    new_string=[]
    for st in string:
        if not st.isalpha():
            new_string.append(st)

        else:
            a="A" if st.isupper() else "a"
            new_string.append(chr((ord(st)-ord(a)+offset)%26+ord(a)))
        encryptor="".join(new_string)
    print(encryptor)

下面这个字符串是我对你说的悄悄话,来破解一下吧!

代码语言:javascript
复制
'Bjqhtrj yt anxny rd tkknhnfq fhhtzsy,Ymfspx ktw dtzw wjfinsl!'

破解了也没有奖励的~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与数据之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档