python 凯撒加密 计算偏移量
接收一个字符串method为参数,根据参数值调用不同函数实现对文本的加密和解密。
method 值为 '统计字符'时,统计并输出文本中不同类型字符的数量并输出。
method 值为 '统计单词'时,统计并输出文本中单词的数量。
method 值为 '首字符'时,将所有单词的首字符提取出来拼接为一个字符串输出。
method 值为 '凯撒加密'时,再输入一个单词做为密钥发生器,用于计算偏移量,对文件中的内容进行加密并输出。
import stringdef judge(method, txt):if method == '1':classify = classify_char(text)print('大写字母{}个,小写字母{}个,数字{}个,空格{}个,其他{}个'.format(*classify))elif method == '2':word_lst = word_list(text) # 单词的列表words_counts = number_of_words(word_lst)print(f'共有{words_counts}单词')elif method == '3':word_lst = word_list(text) # 单词的列表new_str = first_letter(word_lst)print(f'拼接的字符串是{new_str}')elif method == '4':key = input('输入一个用于计算偏移量的单词:') # 输入一个用于计算偏移量的单词offset = cal_offset(key) # 计算偏移量print(caesar_cipher(text, offset)) # 加密else:print('输入错误')def read_file(file):with open(f'D:\pycharm\PycharmProjects/{file}.txt', 'r', encoding='utf-8') as f:return f.read() # 读取文件中的内容为一个字符串def classify_char(txt):count=0count1=0count2=0count3=0count4=0L = txt.__len__();for i in range(L):if txt[i]>='A' and txt[i]<='Z':count+=1elif txt[i]>='a' and txt[i]<='z':count1+=1elif txt[i]>='0' and txt[i]<='9':count2+=1elif txt[i]==" ":count3+=1else :count4+=1return (count,count1,count2,count3,count4)def word_list(txt):m = '!"#$%&()*+,-.:;<=>?@[\\]^_‘{|}~/'for f in txt:if f in m:txt = txt.replace(f, ' ')return txt.split()def number_of_words(ls):return len(ls)def first_letter(ls):str=''for i in ls:str+=i[0]return strdef cal_offset(key_word):sum = 0for i in key_word:sum+=ord(i)sum = sum%9return sumdef caesar_cipher(text, offset):s1='abcdefghijklmnopqrstuvwxyz's2=s1.upper()s3=[0,1,2,3,4,5,6,7,8,9]s=[]for i in text:if i>='a' and i<='z':for k in range(s1.__len__()):if i==s1[k]:s.append(s1[(k+offset)%25])elif i>='A' and i<='Z':for k in range(s2.__len__()):if i==s2[k]:s.append(s2[(k+offset)%25])elif i>='0' and i<='9':for k in range(s3.__len__()):if int(i)==s3[k]:s.append(str(s3[(k+offset)%10]))else:s.append(i)w = ''.join(s)return wif __name__ == '__main__':while True:again = input("按任意键继续,结束请输入'no':")if again == 'no':breakfilename = input('请输入要处理的文件名:') # 输入要处理的文件名methods = input("输入要进行的操作编号(1.'统计字符';2.'统计单词';3.'首字符';4.'凯撒加密'):") # 输入要进行的操作text = read_file(filename) # text为读文件获得的字符串judge(methods, text) # 调用函数,输出处理结果'''示例如下:>> 按任意键继续,结束请输入'no':>> 请输入要处理的文件名:my>> 输入要进行的操作编号(1.'统计字符';2.'统计单词';3.'首字符';4.'凯撒加密'):1大写字母16个,小写字母306个,数字11个,空格84个,其他17个>> 按任意键继续,结束请输入'no':>> 请输入要处理的文件名:my>> 输入要进行的操作编号(1.'统计字符';2.'统计单词';3.'首字符';4.'凯撒加密'):2共有85单词>> 按任意键继续,结束请输入'no':>> 请输入要处理的文件名:my>> 输入要进行的操作编号(1.'统计字符';2.'统计单词';3.'首字符';4.'凯撒加密'):3拼接的字符串是T3tfuAfIafHf1tAftdewtsmFtltIwtttcwwcttofcomcIajf3tGrIwsdattIwsfBItituMpw1amBIcnfagji1>> 按任意键继续,结束请输入'no':>> 请输入要处理的文件名:my>> 输入要进行的操作编号(1.'统计字符';2.'统计单词';3.'首字符';4.'凯撒加密'):4>> 输入一个用于计算偏移量的单词:ecutUsjfe 4 ujnft gps vojwfstjuz. Bmm gbjmfe.J bqqmjfe gps Ibswbse gps 21 ujnft. Bmm gbjmfe, uifz epo’u fwfo xbou up tff nf.Gps uif mbtu ujnf, J xfou up uif ufbdifst’ dpmmfhf xijdi xbt dpotjefsfe uif uijse ps gpvsui dmbtt pg nz djuz.J bqqmjfe kpct gps 41 ujnft. Hpu sfkfdufe.Ju xbt tp ejggjdvmu bu uibu ujnf, J xbt tp gsvtusbufe.Cfdbvtf J ubvhiu jo uif vojwfstjuz. Nz qbz xbt $21 b npoui.Cfdbvtf J dpvme opu gjoe b hppe kpc jo 2005.>> 按任意键继续,结束请输入'no':no'''
python 凯撒加密 计算偏移量相关推荐
- python凯撒加密代码_解密题(凯撒密码)
在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一 ...
- python凯撒加密实验报告_Python之凯撒加密
凯撒加密介绍 在密码学中,恺撒密码是一种最简单且最广为人知的加密技术. 它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文. 例,当偏移量是3的时 ...
- Python——凯撒加密
编写程序,要求输入一个字符串,然后输入一个整数作为凯撒加密算法的密钥,输出该字符串加密后的结果. import string def kaisa(s, k):lower = string.ascii_ ...
- python凯撒加密图片
欢迎加入我们卧虎藏龙的python讨论qq群:729683466 之前有朋友在群里问凯撒密码 询问如何用凯撒密码加密文件 几天,就用图片加密给大家演示一下 如何给图像进行加密 对图像的每个像素点进行数 ...
- python凯撒加密代码_python凯撒加密
在密码学中,恺撒密码是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文.例,当偏移量是3的时候,所有的字母A将 ...
- python 凯撒加密
import os def encryption(): str_raw = input("请输入明文:") k = int(input("请输入位移值:& ...
- C语言凯撒密码字母向后偏移三位,凯撒加密解密(java字母移位)
1.设计思想:加密就是将字符数据转化为ASC码表中的数字,a-w之间通过加3之后再转化为字符型输出,x-z之间通过转化为ASC码表中的数字后减去23再转化为字符型输出.解密就是将字符数据转化为ASC码 ...
- 【每日一题】| (古典加密)凯撒密码(一)简单的凯撒加密
文章目录 前言 一.凯撒加密是什么 举个例子 扩展:ROT-13(回转13位) 二.密码破解 总结 前言 今天的每日一题,由我向来大家来介绍预备知识.今天就跟大家聊一聊CTF密码学中古典加密的经典加密 ...
- 凯撒加密的python语言程序_python实现凯撒密码、凯撒加解密算法
凯撒密码的原理:计算并输出偏移量为3的凯撒密码的结果 注意:密文是大写字母,在变换加密之前把明文字母都替换为大写字母 def casar(message): # *************begin* ...
最新文章
- AttributeError: ‘Series‘ object has no attribute ‘as_matrix‘
- Java 解惑:Comparable 和 Comparator 的区别
- 入门Python神经机器翻译,这是一篇非常精简的实战指南
- PHP Misc. 函数
- VTK:可视化之MultipleViewports
- apache camel_使用WildFly 8在Java EE7中自举Apache Camel
- 线性代数应该这样讲(二)
- 【python科学计算发行版】
- 【SpringMVC整合MyBatis】整合思路与工程结构
- 马斯克超扎克伯格 跻身全球第三大富豪
- html流光按钮,【CSS】css实现流光效果-按钮流光显示效果-自发光
- joomla添加html,如何将自定义html代码添加到Joomla 2.5菜单项?
- Java 获取本地时间,并格式化年、月、日
- 视频教程-VB程序设计教程:从入门到精通-计算机等级考试
- java将bmp文件转为jpg_在PHP中将BMP转换为JPG
- DSP28335 ecap使用
- java后台如何给数据给前端_JAVA后台 关于如何从后台传递信息在jsp前端页面显示...
- 歌手祁隆离婚再起波澜,与和合国际收购《借我星光》版权有关系吗
- iOS 查看所有系统字体
- flink入门_flink简单学习_flink初识
热门文章
- GNS3 1.3 10 考CCNA,CCNP,思科证必备软件教学和资源(拿高薪,走向人生巅峰)...
- Revit问题:墙体被楼板剪切及材质库被锁定问题
- HEVC标准概览-很概括很详细
- 申请时软件著作权是否要提交合作协议
- (转载)bin文件格式分析
- 基于STM32+DAC+DMA和AD9850的波形发生器
- 架构09 社交软件红包技术01
- 2G到4G网络结构的演进过程(图)
- kafka-eagle工具安装部署
- 【论文阅读笔记】Real-Time Video Super-Resolution on Smartphones with Deep Learning, Mobile AI 2021 Challenge