汉字简易加密解密小程序
最近在上密码学,随便写着玩玩。
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)
汉字简易加密解密小程序相关推荐
- java简单小程序_Java简易登录注册小程序
这篇文章主要介绍了Java图形界面开发,简易登录注册小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的 ...
- 解密小程序云开发数据库
作者:phoenixxliu,腾讯 TEG 后台开发工程师 目录: 导语 一.背景 二.竞品分析 三.需求和挑战 四.架构和方案 五.总结和展望 导语 小程序云开发(Tencent CloudBase ...
- 百度翻译api 实现简易微信翻译小程序
介绍 口袋翻译 口袋翻译 微信小程序 翻译功能 含7类语言的相互翻译 包含最近10条的翻译历史回溯功能 微信搜索:简e翻译 功能展示 使用百度翻译api 需要申请 appid 与 key 并在 api ...
- c 语言简单字符加密,C字符串简易加密解密算法
一. 问题描述 对一个指定的字符串进行加密之后,利用解密函数能后对密文解密显示明文信息,这里定义加密的规则:是将字符串中每个字符加上它在字符串中的位置和一个偏移值.例如:将字符串"mrsof ...
- 【简易】微信小程序日期Date的加减
微信小程序中获取当前日期可以直接创建Date对象 JavaScript Date 对象 想实现两个日期的联动,参考文章写了简单的加减的函数:微信小程序js日期格式转化及加减 日期增加的主要代码: // ...
- 大学自习室简易抢座小程序
用户端使用微信小程序,从某个模板扒皮下来. 服务端使用GO gin框架. 大致结构 小程序提交抢座任务,服务器每天定时抢座. 1.遇到过座位服务器响应过慢,解决办法就是简化步骤,将耗时的步骤尽量提前进 ...
- Java简易点单小程序
1.流程图 2.代码 2.1 Dishes类 package yaoyanru;public class Dishes {int id;String name;float price;int styl ...
- Android平台和java平台 DES加密解密互通程序及其不能互通的原因
为什么80%的码农都做不了架构师?>>> 网上的demo一搜一大堆,但是,基本上都是一知半解(包括我).为什么呢?我在尝试分别在两个平台加密的时候,竟然发现Android DE ...
- Java图形界面开发—简易登录注册小程序
登录注册小代码,将学过的一些小知识融合在一起进行了使用,加深印象.本例中如果有注释不详细的地方,详见其它博客. Java程序操作数据库SQLserver详解 功能介绍:简单的登录注册系统,使用了数据库 ...
最新文章
- Go全局变量syntax error: non-declaration statement outside function bodygo
- 牛逼!Python的判断、循环和各种表达式(长文系列第②篇)
- kettle 的表输出 table output
- Crystal 语法概述[转]
- [有限元]虚位移原理和虚力原理的证明的统一逻辑
- 在伦敦逛菜市场_我在伦敦进行岗后求职的经验教训
- 身为程序员的父母,你年薪多少才能让“码二代” 不输在起跑线上
- Spring Boot 2 - 初识与新工程的创建
- 微信支付开发(3) 对账单
- SourcesTree使用手册1:与Git进行通信
- 【全网最全】软件测试面试题(含答案),2022最强版,直通大厂
- java接收二进制数据,java接口接收二进制流
- Pdfjs-dist 填坑日记
- 计算机 360云盘删除,如何删除电脑右键菜单中的保存到360云盘选项
- 网易微专业java高级笔记_网易前端微专业------页面架构笔记
- 7.8 最优二叉树与哈夫曼编码
- django模型类中,为什不是user_id而是user?
- Lady General Hua Mu-lan花木兰剧本
- Dubbo封装异常处理Filter报AppResponse represents an concrete business response解决方案
- Ax、Bx、Cx、Dx、AL、BL、CL、DL、AH、BH、CH、DH
热门文章
- 全新2022测算系统完整版+支持对接结
- 【uniapp】页面下拉刷新
- 如何轻松画好服装设计效果图
- EAS提示对不起当前对象正在被其他操作锁定问题处理
- 江敏:做创业公司CTO,是程序员未知的冒险
- CorelDRAW2023最新版矢量设计软件
- 浅谈精益数字化工厂(Lean Digital Factory, LDF)
- python变量名必须以字母或下划线开头不区分字母大小写_Python变量名必须以字符或下划线开头,并且区分字母大小写。...
- 爬取2017年底最新中国全国五级行政区划代码省市区县乡镇村MySQL数据库
- 开始实际搭建App测试环境-Appium