用python编程实例解析凯撒密码的具体应用

Posted zhi_neng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用python编程实例解析凯撒密码的具体应用相关的知识,希望对你有一定的参考价值。

凯撒密码是古罗马凯撒大帝用来对及时情报进行加密的算法,它采用了替换方法将信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即循环左移3位。凯撒密码包括加密部分和解密部分两个。

凯撒密码的对应关系如下:

原文: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

密文: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

原文字符P,其密文字符C满足如下条件:

C =(P+3)mod 26

解密方法反之,满足:

P = (C-3)mod 26

 

1.加密算法

凯撒密码的加密算法程序首先接收用户输入文本,然后对字母a-z和字母A-Z按照密码算法进行转换,同时输出。其他非英文字母部分直接输出。具体代码如下。

#CaesarEncode.py

ptxt = input('请输入明文文本:')
for p in ptxt:
    if 'a'<= p <='z':
        print(chr(ord('a')+(ord(p)-ord('a')+3)%26),end='')
    elif 'A'<= p <= 'Z':
        print(chr(ord('A') + (ord(p) - ord('A') + 3) % 26), end='')
    else:
        print(p,end='')

输入一段文本,运行结果如下:

>>>

请输入明文文本:This is an excellent Python book.
Wklv lv dq hafhoohqw Sbwkrq errn.

 

2.解密算法

凯撒密码的解密算法程序首先接收用户输入的加密文本,然后对字母a-z和字母A-Z按照密码算法进行反向转换,同时输出。其他非英文字母部分直接输出。具体代码如下:

def jiemi():
    etxt = input('请输入加密后的文本:')
    for p in etxt:
        if 'a'<= p <='z':
            print(chr(ord('a')+(ord(p)-ord('a')-3)%26),end='')
        elif 'A'<= p <= 'Z':
            print(chr(ord('A') + (ord(p) - ord('A')-3) % 26), end='')
        else:
            print(p,end='')

jiemi()

输入一段文本,运行结果如下:

>>>

请输入加密后的文本:Wklv lv dq hafhoohqw Sbwkrq errn
This is an excellent Python book

 

3.针对中文字符的加解密算法

凯撒密码针对的是英文26个字母进行变化,其加密思想对中文字符也是十分适合,所不同的是,中文字符范围比较广,相比其他字符,其中常用的字并不多,可以仅通过位移实现加密。具体的来说,基本汉字Unicode编码的范围是0x4E00~0x9FA5,共计20902字。可以采用简化的Unicode码右移三位方式实现加密,左移三位实现解密。字母仍然按照凯撒密码方式加密。具体代码如下:

def jiami():
    ptxt = input('请输入明文文本:')
    for p in ptxt:
        if 'a'<= p <='z':
            print(chr(ord('a')+(ord(p)-ord('a')+3)%26),end='')
        elif 'A'<= p <= 'Z':
            print(chr(ord('A') + (ord(p) - ord('A') + 3) % 26), end='')
        elif 0x4E00<= ord(p) <=0x9FA5:#中文字符加密处理
            print(chr(ord(p)+3),end='')
        else:
            print(p,end='')



def jiemi():
    etxt = input('请输入加密后的文本:')
    for p in etxt:
        if 'a'<= p <='z':
            print(chr(ord('a')+(ord(p)-ord('a')-3)%26),end='')
        elif 'A'<= p <= 'Z':
            print(chr(ord('A') + (ord(p) - ord('A')-3)%26), end='')
        elif 0x4E00<= ord(p) <=0x9FA5:#中文字符解密处理
            print(chr(ord(p)-3),end='')
        else:
            print(p,end='')

jiami()
jiemi()

输入一段文字,运行结果如下:

请输入明文文本:这是一个用Python进行凯撒密码加密的例子
远昲七中甫Sbwkrq连衏凲撕寉砄劣寉皇侎孓

请输入加密后的文本:远昲七中甫Sbwkrq连衏凲撕寉砄劣寉皇侎孓
这是一个用Python进行凯撒密码加密的例子

以上就是有关凯撒密码的具体的算法,大家可以多了解一下,觉得有用的给点个赞,谢谢!

以上是关于用python编程实例解析凯撒密码的具体应用的主要内容,如果未能解决你的问题,请参考以下文章

凯撒密码java编程实现图形界面化代码

jmu-python-凯撒密码加密算法,谢谢

RSA加密过的表单密码用python怎么模拟

用python实现凯撒密码

python-凯撒密码加解密

凯撒密码实现英文短句的加解密