最近在上密码学,随便写着玩玩。

import linecache
import msvcrtdef chineseToUnic(ch):  #汉转Ureturn ch.encode('unicode_escape')def UnicTochinese(ch):  #U转汉ch1 = ch.decode('unicode_escape')return ch1def charToUnic(ch):  #二次加密keycreate = []strsave = []saver = []num = 0for i in range(0, len(ch)):if ch[i] > 256:num = ch[i]//256strsave.append(ch[i] % 256)keycreate.append(num)if ch[i] <= 256:ketcreate.append(0)strsave.append(ch[i])saver.append(keycreate)saver.append(strsave)return saverdef Whispersfor604(PlainU): #明文加密k = 5#加密键值(可更改)strsave = []numsave = 0for i in range(0, len(PlainU)):numsave = PlainU[i]*k*abs(k-2)#加密算法(可更改)strsave.append(numsave)return strsavedef road(key, whispermath): #加密字符显现intstrsave = []for i in range(0, len(whispermath)):intstrsave.append(chr(whispermath[i]))strsaver = ''.join(intstrsave)return strsaverdef scream(num):#加密符号生成str = []for i in range(0, len(num)):str.append(chr(num[i]))return strdef clear(str):#加密符号解密result = []for i in range(0, len(str)):result.append(ord(str[i]))return resultdef slove(key, whispermath):#二次解密numsaver1 = []num = 0for i in range(0, len(whispermath)):num = (int(key[i])*256)+whispermath[i]numsaver1.append(num)return numsaver1def slovefor604(PlainU): #密文解密k = 5#加密键值(可更改)strsave = []numsave = 0for i in range(0, len(PlainU)):numsave = PlainU[i]/(k*abs(k-2))#加密算法(可更改)strsave.append(round(numsave))return strsavedef simple(list):#密钥简约生成numlist = []for i in range(0, len(list)):numlist.append(str(list[i]))str2 = "".join(numlist)return str2strnum = []
strnum2 = []
choice = int(input("输入1进行加密工作,输入2进行解密工作:"))
#加密组
if choice == 1:content = input("输入你想加密的明文:")writer = input("输入密文留言:")contentU = chineseToUnic(content)contentH = UnicTochinese(contentU)whispers = Whispersfor604(contentU)whispersH = charToUnic(whispers)a = road(whispersH[0], whispersH[1])b = scream(whispersH[1])#密钥本地生成print("密钥已生成在本地路径,密文名称为:", '南05第'+str(whispersH[1][len(whispersH[1])-1])+'号密文')result2txt = simple(whispersH[0])         # data是前面运行出的数据,先将其转为字符串才能写入with open('南05第'+str(whispersH[1][len(whispersH[1])-1])+'号密文', 'wt', encoding='utf-8') as file_handle:   # .txt可以不自己新建,代码会自动新建file_handle.write(result2txt+"\n")for i in range(0, len(b)):file_handle.write(b[i]+"\n")file_handle.write(writer)#解密组
if choice == 2:U = ''num = input("请输入密文中包含的连续数字(左至右):")key = " " + input("请输入密文留言:") + "\n"f = open('南05第' + num + '号密文', 'r')txt = ''whispers = ''whispers = linecache.getline('南05第' + num + '号密文', 1)txt = " "+linecache.getline('南05第' + num + '号密文', len(whispers)+1)if txt == key:content = []for i in range(1, len(whispers)):content.append(linecache.getline('南05第' + num + '号密文', i+1).replace("\n", ""))contentNum = []contentNum = clear(content)beforeresult = slove(whispers, contentNum)result = slovefor604(beforeresult)else:exit("留言有问题,停止解密工作")for i3 in range(0, len(result)):num = 0num = result[i3]strnum.append(num)U = UnicTochinese(bytes(strnum))print("解析成功,密文内容为:" + U)
print("程序将在三秒后退出")
import time
time.sleep(3)

汉字简易加密解密小程序相关推荐

  1. java简单小程序_Java简易登录注册小程序

    这篇文章主要介绍了Java图形界面开发,简易登录注册小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的 ...

  2. 解密小程序云开发数据库

    作者:phoenixxliu,腾讯 TEG 后台开发工程师 目录: 导语 一.背景 二.竞品分析 三.需求和挑战 四.架构和方案 五.总结和展望 导语 小程序云开发(Tencent CloudBase ...

  3. 百度翻译api 实现简易微信翻译小程序

    介绍 口袋翻译 口袋翻译 微信小程序 翻译功能 含7类语言的相互翻译 包含最近10条的翻译历史回溯功能 微信搜索:简e翻译 功能展示 使用百度翻译api 需要申请 appid 与 key 并在 api ...

  4. c 语言简单字符加密,C字符串简易加密解密算法

    一. 问题描述 对一个指定的字符串进行加密之后,利用解密函数能后对密文解密显示明文信息,这里定义加密的规则:是将字符串中每个字符加上它在字符串中的位置和一个偏移值.例如:将字符串"mrsof ...

  5. 【简易】微信小程序日期Date的加减

    微信小程序中获取当前日期可以直接创建Date对象 JavaScript Date 对象 想实现两个日期的联动,参考文章写了简单的加减的函数:微信小程序js日期格式转化及加减 日期增加的主要代码: // ...

  6. 大学自习室简易抢座小程序

    用户端使用微信小程序,从某个模板扒皮下来. 服务端使用GO gin框架. 大致结构 小程序提交抢座任务,服务器每天定时抢座. 1.遇到过座位服务器响应过慢,解决办法就是简化步骤,将耗时的步骤尽量提前进 ...

  7. Java简易点单小程序

    1.流程图 2.代码 2.1 Dishes类 package yaoyanru;public class Dishes {int id;String name;float price;int styl ...

  8. Android平台和java平台 DES加密解密互通程序及其不能互通的原因

    为什么80%的码农都做不了架构师?>>>    网上的demo一搜一大堆,但是,基本上都是一知半解(包括我).为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DE ...

  9. Java图形界面开发—简易登录注册小程序

    登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的地方,详见其它博客. Java程序操作数据库SQLserver详解 功能介绍:简单的登录注册系统,使用了数据库 ...

最新文章

  1. Go全局变量syntax error: non-declaration statement outside function bodygo
  2. 牛逼!Python的判断、循环和各种表达式(长文系列第②篇)
  3. kettle 的表输出 table output
  4. Crystal 语法概述[转]
  5. [有限元]虚位移原理和虚力原理的证明的统一逻辑
  6. 在伦敦逛菜市场_我在伦敦进行岗后求职的经验教训
  7. 身为程序员的父母,你年薪多少才能让“码二代” 不输在起跑线上
  8. Spring Boot 2 - 初识与新工程的创建
  9. 微信支付开发(3) 对账单
  10. SourcesTree使用手册1:与Git进行通信
  11. 【全网最全】软件测试面试题(含答案),2022最强版,直通大厂
  12. java接收二进制数据,java接口接收二进制流
  13. Pdfjs-dist 填坑日记
  14. 计算机 360云盘删除,如何删除电脑右键菜单中的保存到360云盘选项
  15. 网易微专业java高级笔记_网易前端微专业------页面架构笔记
  16. 7.8 最优二叉树与哈夫曼编码
  17. django模型类中,为什不是user_id而是user?
  18. Lady General Hua Mu-lan花木兰剧本
  19. Dubbo封装异常处理Filter报AppResponse represents an concrete business response解决方案
  20. Ax、Bx、Cx、Dx、AL、BL、CL、DL、AH、BH、CH、DH

热门文章

  1. 全新2022测算系统完整版+支持对接结
  2. 【uniapp】页面下拉刷新
  3. 如何轻松画好服装设计效果图
  4. EAS提示对不起当前对象正在被其他操作锁定问题处理
  5. 江敏:做创业公司CTO,是程序员未知的冒险
  6. CorelDRAW2023最新版矢量设计软件
  7. 浅谈精益数字化工厂(Lean Digital Factory, LDF)
  8. python变量名必须以字母或下划线开头不区分字母大小写_Python变量名必须以字符或下划线开头,并且区分字母大小写。...
  9. 爬取2017年底最新中国全国五级行政区划代码省市区县乡镇村MySQL数据库
  10. 开始实际搭建App测试环境-Appium