专栏首页算法与数据之美一个简单的加密算法

一个简单的加密算法

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

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

举个?

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

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

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

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

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

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

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)

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

'Bjqhtrj yt anxny rd tkknhnfq fhhtzsy,Ymfspx ktw dtzw wjfinsl!'

破解了也没有奖励的~

本文分享自微信公众号 - 算法与数据之美(algo_and_data),作者:斐波那契小李

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 上班摸鱼系列|Python开发命令行斗地主

    今天给大家带来的是如何上班如何高级摸鱼:用Python开发一个命令行斗地主小游戏,利用跑程序的时间来一把斗地主岂不是非常快乐,关键是没有时间限制,不仅可以喊上老...

    老肥码码码
  • 手把手教你给项目添加文档

    该文档主要是由Read the Docs这个在线文档托管、Sphinx这个基于Python的文档生成项目以及我们常逛的人类精华宝库GitHub实现的,下面我们就...

    老肥码码码
  • 使用Python带你分析酒店里的针孔摄像头

    我们大家都知道,针孔摄像一般都很小,所以它不太可能含有存储设备,都是通过连接酒店房间内的无线网,远程传输给作案人,我们就从这方面入手,用Python的scap...

    老肥码码码
  • Scikit-learn的模型设计与选择

    目的:本文的目的是从头到尾构建一个管道,以便在合成数据集上访问18个机器学习模型的预测性能。

    代码医生工作室
  • 【学习】因果与相关之争

    ? 因果关系与相关关系的异同 因果关系和相关关系在分析过程中应用广泛。 然而,一部分人在不了解两种方法的支撑逻辑时往往将两种关系等同看待。 显然,人们被困于因...

    小莹莹
  • 基于 Nginx + PHP-FPM 作为 HTTP 服务器

    PHP 对 HTTP 请求响应支持非常友好,可以通过 PHP 预定义的超全局变量获取 HTTP 请求数据:

    学院君
  • 一道小CTF

    lonelyvaf
  • MySQL · 物理备份 · XtraBackup备份原理

    Percona XtraBackup[1](简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库「物理热备」的备份工具,支持 MySQl(Or...

    公众号: 云原生生态圈
  • python对象销毁(垃圾回收)

    py3study
  • 网络测量之NetSight(NSDI-2014)

    NSDI 2014年中,由斯坦福大学”SDN之父”,Nick Mckeown教授带领的实验室发表了题为《I Know What Yout Packet Did ...

    我是东东东

扫码关注云+社区

领取腾讯云代金券