ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python--凯撒加密算法

2021-11-28 09:34:13  阅读:202  来源: 互联网

标签:string Python after -- table 逆序 ascii 加密算法 before


'''
第一种算法是凯撒加密的基本算法,解题思路是明白算法规则。maketrans()用于创健映射表,before是原先的格式,after是加密规则。要求字母向左移动k位,利用切片完成这一操作。

第二种是大小写互换,after只需拼接的时候大写字母再前,小写字母在后即可完成这个规则要求

第三种相对前面两种就麻烦了,需要先对大小写字母分别逆序,这就利用了python自带的sorted()函数,把字符转换成逆序的列表。
逆序完成后对他们进行字母左移k位,也就是基本算法的要求。之后对他们进行一个拼接利用join()函数,转换成字符串。再用maketrans()创建映射表,translate
进行加密。
string对象是python提供的,在这里提供了大小写字母,这只是python中常用库函数之一,这也是python的优点,强大的,丰富的库函数。
'''

#基本算法

import string

def kaisa(s,k):

    lower=string.ascii_lowercase

    upper=string.ascii_uppercase

    before=string.ascii_letters

    after=lower[k:]+lower[:k]+upper[k:]+upper[:k]

    table="".maketrans(before,after)#创建映射表

    return s.translate(table)

s="Python is a great programming language. i like it"

a=kaisa(s,3)

print(a)

#大写与小写互换算法

import string

def kaisa(s):

    before=string.ascii_letters

    after=string.ascii_uppercase+string.ascii_lowercase

    table="".maketrans(before,after)#创建映射表

    return s.translate(table)

s="Python is a great programming language. i like it"

a=kaisa(s)

print(a)

小写与大写分别逆序并移动k位进行映射

import string

def kaisa(s,k):

    lower=string.ascii_lowercase

    upper=string.ascii_uppercase

    before=string.ascii_letters

    after1=sorted(lower,reverse=True)#小写逆序

    after2=sorted(upper,reverse=True)#大写逆序,变成列表

    after3=after1[k:]+after1[:k]+after2[k:]+after2[:k]

    after4="".join(after3)#拼接,成为字符串



    table="".maketrans(before,after4)#创建映射表,Return a translation table usable for str.translate().

    return s.translate(table)# return self.__class__(self.data.translate(*args))

s="Python is a great programming language. i like it"

a=kaisa(s,3)

print(a)

标签:string,Python,after,--,table,逆序,ascii,加密算法,before
来源: https://blog.csdn.net/m0_59882269/article/details/121050255

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有