接收一个字符串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 凯撒加密 计算偏移量相关推荐

  1. python凯撒加密代码_解密题(凯撒密码)

    在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密.恺撒变换.变换加密,是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一 ...

  2. python凯撒加密实验报告_Python之凯撒加密

    凯撒加密介绍 在密码学中,恺撒密码是一种最简单且最广为人知的加密技术. 它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文. 例,当偏移量是3的时 ...

  3. Python——凯撒加密

    编写程序,要求输入一个字符串,然后输入一个整数作为凯撒加密算法的密钥,输出该字符串加密后的结果. import string def kaisa(s, k):lower = string.ascii_ ...

  4. python凯撒加密图片

    欢迎加入我们卧虎藏龙的python讨论qq群:729683466 之前有朋友在群里问凯撒密码 询问如何用凯撒密码加密文件 几天,就用图片加密给大家演示一下 如何给图像进行加密 对图像的每个像素点进行数 ...

  5. python凯撒加密代码_python凯撒加密

    在密码学中,恺撒密码是一种最简单且最广为人知的加密技术.它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文.例,当偏移量是3的时候,所有的字母A将 ...

  6. python 凯撒加密

    import os def encryption():     str_raw = input("请输入明文:")     k = int(input("请输入位移值:& ...

  7. C语言凯撒密码字母向后偏移三位,凯撒加密解密(java字母移位)

    1.设计思想:加密就是将字符数据转化为ASC码表中的数字,a-w之间通过加3之后再转化为字符型输出,x-z之间通过转化为ASC码表中的数字后减去23再转化为字符型输出.解密就是将字符数据转化为ASC码 ...

  8. 【每日一题】| (古典加密)凯撒密码(一)简单的凯撒加密

    文章目录 前言 一.凯撒加密是什么 举个例子 扩展:ROT-13(回转13位) 二.密码破解 总结 前言 今天的每日一题,由我向来大家来介绍预备知识.今天就跟大家聊一聊CTF密码学中古典加密的经典加密 ...

  9. 凯撒加密的python语言程序_python实现凯撒密码、凯撒加解密算法

    凯撒密码的原理:计算并输出偏移量为3的凯撒密码的结果 注意:密文是大写字母,在变换加密之前把明文字母都替换为大写字母 def casar(message): # *************begin* ...

最新文章

  1. AttributeError: ‘Series‘ object has no attribute ‘as_matrix‘
  2. Java 解惑:Comparable 和 Comparator 的区别
  3. 入门Python神经机器翻译,这是一篇非常精简的实战指南
  4. PHP Misc. 函数
  5. VTK:可视化之MultipleViewports
  6. apache camel_使用WildFly 8在Java EE7中自举Apache Camel
  7. 线性代数应该这样讲(二)
  8. 【python科学计算发行版】
  9. 【SpringMVC整合MyBatis】整合思路与工程结构
  10. 马斯克超扎克伯格 跻身全球第三大富豪
  11. html流光按钮,【CSS】css实现流光效果-按钮流光显示效果-自发光
  12. joomla添加html,如何将自定义html代码添加到Joomla 2.5菜单项?
  13. Java 获取本地时间,并格式化年、月、日
  14. 视频教程-VB程序设计教程:从入门到精通-计算机等级考试
  15. java将bmp文件转为jpg_在PHP中将BMP转换为JPG
  16. DSP28335 ecap使用
  17. java后台如何给数据给前端_JAVA后台 关于如何从后台传递信息在jsp前端页面显示...
  18. 歌手祁隆离婚再起波澜,与和合国际收购《借我星光》版权有关系吗
  19. iOS 查看所有系统字体
  20. flink入门_flink简单学习_flink初识

热门文章

  1. GNS3 1.3 10 考CCNA,CCNP,思科证必备软件教学和资源(拿高薪,走向人生巅峰)...
  2. Revit问题:墙体被楼板剪切及材质库被锁定问题
  3. HEVC标准概览-很概括很详细
  4. 申请时软件著作权是否要提交合作协议
  5. (转载)bin文件格式分析
  6. 基于STM32+DAC+DMA和AD9850的波形发生器
  7. 架构09 社交软件红包技术01
  8. 2G到4G网络结构的演进过程(图)
  9. kafka-eagle工具安装部署
  10. 【论文阅读笔记】Real-Time Video Super-Resolution on Smartphones with Deep Learning, Mobile AI 2021 Challenge