python实现凯撒密码加密解密的示例代码
作者:半夏微光1117 发布时间:2021-12-08 07:29:07
标签:python,凯撒,加密,解密
凯撒加密就是通过将字母移动一定的位数来实现加密和解密。明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移,被替换成密文。例如,当偏移量是2的时候,所有的字母B将被替换成D,C变成E,以此类推Y将变成A,Z变成B。由此可见,偏移量就是凯撒密码加密和解密的密钥。
下面使用python代码来实现凯瑟密码的加密解密。
import string
def kaisa_jiami(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)
def kaisa_jiemi(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(after,before)
return s.translate(table)
def main():
s=input("请输入要加密的字符串:")
k=int(input("请输入一个整数密钥:"))#将k转换为整数,默认输入为字符
print('需要加密的字符串为:',s)
a=kaisa_jiami(s,k)
print("加密后为:",a)
b= kaisa_jiemi(a,k)
print("解密后为:",b)
if __name__=='__main__':
main()
运行结果
请输入要加密的字符串:HELLO world
请输入一个整数密钥:3
需要加密的字符串为: HELLO world
加密后为: KHOOR zruog
解密后为: HELLO world
上述程序中主要用到了maketrans()和translate()两个方法。下面让我们来详细看一下这两个方法的使用方法。
translate() 方法根据 maketrans() 方法给出的字符映射转换表转换字符串中的字符。
比如
import string
map = ''.maketrans('ABC123', 'abcDEF')#形成一个映射,将ABC123分别映射为abcDEF
s = "123ABC"
s.translate(map)#按照map中的映射关系进行字符的替换。
运行结果
'DEFabc'
来源:https://blog.csdn.net/wmx1117/article/details/105586265
0
投稿
猜你喜欢
- 在数据预处理过程中可能会遇到这样的问题,如下图:数据中某一个key有多组数据,如何分别对每个key进行相同的运算?dataframe里面给出
- 今天好不容易闲下来半天,所以和大家分享一下我之前总结的一套Web UI 设计命名规范,也就是网站用户界面设计(俗称网页设计)命名规范。这套规
- 上一篇博客selenium+python自动化测试(二)–使用webdriver操作浏览器讲解了使用webdriver操作浏览器的各种方法,
- 1. MyISAM底层存储(非聚集索引方式)与InnoDB底层存储(聚集索引方式)1.1 MyISAM底层存储(非聚集索引方式)Myisam
- 秒杀活动可以说在互联网上随处可见,从12306抢票,到聚划算抢购,我们生活的方方面面都可以看到秒杀的身影。秒杀的架构设计也是对于一个架构师架
- 万恶的源泉:Fireboo的疑问(当然 lambda 本身写的就有问题):>>> filter( lambda x: x
- 下面先给大家介绍python实现版本号对比功能,具体内容如下所示:相同位置版本号大小比较:def abc(str1, str2): &nbs
- 本文实例讲述了Python smallseg分词用法。分享给大家供大家参考。具体分析如下:#encoding=utf-8 #import p
- 1.Quiz有如下一个例子:package mainimport ("encoding/json""fmt&q
- 本文采用vue,同时增加鼠标点击事件和一些页面小优化基本结构新建一个sandBox.vue文件编写功能的基本结构 <div class
- jupyter因为其在python框架下具有一个较为人性化的设计,从而在数据分析,python教学,以及python的快速学习中大放光彩.j
- 所谓的列表推导式,就是指的轻量级循环创建列表。基本使用方式# 创建一个0-10的列表a = [x for x in range(11)]pr
- 说下防止PHPDDOS发包的方法 if (eregi("ddos-udp",$read)) { fputs($verbi
- 一、pyqt5的UI中嵌入matplotlib的方法1、导入模块导入模块比较简单,首先声明使用pyqt5,通过FigureCanvasQTA
- 简介在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找
- 本文实例讲述了Python聚类算法之基本K均值运算技巧。分享给大家供大家参考,具体如下:基本K均值 :选择 K 个初始质心,其中 K 是用户
- b 和 i 标签在现在的 Web 标准潜规则中是不推荐使用,甚至是反对使用的,因为认为他们只是“表现”粗体和斜体,而没有任何“语义”。更多的
- MySQL自定义序列数实现往往有很多情况下,我们需要使用自己生成的唯一Id或保证不重复的序列号,特别是在高并发的场景下。为此,很容易想到的实
- 使用xlwt读取txt文件内容,并且写入到excel中,代码如下,已经加了注释。代码简单,具体代码如下:# coding=utf-8'
- 本文实例讲述了python类继承用法。分享给大家供大家参考。具体方法如下:#!/usr/bin/python# Filename: inhe