Day021|凯撒密码

作者: 龙渊的宝藏 | 来源:发表于2021-03-16 20:45 被阅读0次

    今天是Andy学Python的第21天哦! 

    大家好,我是Andy。

    今天学习了凯撒密码。

    01.什么是凯撒密码

    凯撒密码,是一种替换加密的技术,相传为罗马共和时期恺撒首创,曾用于军事通信加密,即明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。比如偏移量是1,那么a就应该写作b,b就应该写作c,以此类推,那么偏移量为+1时,come on加密后就写作dpnf po。解密也是同样的道理,一串密文XusXusOj,偏移量是-6,那么倒退回去,就是“DayDayUp”。 

    02.右移5位加密

    2.1 如何将字母+5?

    观察ASCII码表,根据字母可知晓其ASCII码,反过来知道ASCII码亦知字母。

    A-Z:65-90

    a-z:97-122

    右移5位即ASCII码+5。

    在转换过程中,使用ord()和chr()方法

    print(ord('a'))   #97

    print(chr(98))    #b

    反过来也可使用

    print(str(ord('a')))   #97

    print(chr(ord('b')))   #b

    注意:str()与chr()之间的区别:

    str()是把返回的对象直接转为字符串,而chr()则是把返回的对象转换为对应的ASCII码的字符串。

    2.2 区分大小写

    如何判断。

    message = "Hello"

    # upper():将字符串转换为大写

    message1 = message.upper()

    print(message1)

    # isupper():判断字符串是否都为大写

    print(message1.isupper())

    # lower():将字符串转换为小写

    message2 = message1.lower()

    print(message2)

    # islower():判断字符串是否都为小写

    print(message2.islower())

    2.3 防止意外

    如果Z右移+5,密码应是E,但是ASCII码表对应是90+5=95,是下划线_。如果右移+5后ASCII码对应不是字母,应减26返回。 

    2.4 Andy答案

    message = input("Enter the message:")

    secret = ""

    for letter in message:

        if letter.isupper():    ###大写字母加密

            value = ord(letter)+5

            letter = chr(value)

            if not (letter.isupper()):

                value -= 26

                letter = chr(value)

        if letter.islower():    ###小写字母加密

            value = ord(letter)+5

            letter = chr(value)

            if not (letter.islower()):

                value -= 26

                letter = chr(value)

        secret += letter

    print("Secret Message:",secret)

    作业

    如果信息是数字、字母混合类型,加密方式为左移3位,如何设计加密程序和解密程序?

    Copyright © 2021 Andy学Python

    转载事宜请留言 | 获得授权后方可转载

    本平台所使用的电子版教材、视频属相关权利人所有。因客观原因部分作品若存在不当使用的情况,请相关权利人随时与我们联系,以协商授权事宜。

    End

    不会Python,将成为人工智能时代的新“文盲”!

    欢迎加入零基础自学Python计划,未来100天,Andy会把自学Python学习笔记持续输出公众号、视频号,不定期更新,邀您观战、加油、评论,亦或围观Andy被打脸。

    人到中年,你一定要努力,但千万别着急。

    我是Andy,一个终身学习者。

    欢迎关注公众号与视频号:Andy学Python。

    相关文章

      网友评论

        本文标题:Day021|凯撒密码

        本文链接:https://www.haomeiwen.com/subject/qgcfcltx.html