笨办法学Python简友广场

Day021|凯撒密码

2021-03-16  本文已影响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。

上一篇 下一篇

猜你喜欢

热点阅读