阅读助手

  • 自来水的自述
  • 反切注韵法解密
  • 写在最后

自来水的自述

今天也来当把【自来水】,一开始我对这部剧是没什么想法的,但架不住这部剧频频在我眼前刷屏,多次上热搜也就算了,朋友圈、豆瓣、微博、常看的一些大佬公众号还能经常看到安利。
对于不怎么看视频的我来说,也就记着个名字,并没有去刷的欲望,上周末闲来无事,找个下饭视频就又想起来这个了,刚好也在腾讯首页推荐,
打开之后,一发不可收拾,熬夜通宵追剧,一个周末淦完了!难怪豆瓣评分足足冲到了 8.4 分,口碑在同期播出的古装剧中达到最佳。个人觉得长大后看的最出彩的一部剧了!

还是个“三无”网剧:

  • 没有大腕明星的卡司,
  • 没有铺天盖地的宣发,
  • 甚至成本经费都有些“寒酸,

故事逻辑异常严禁,没有把观众当傻*,文学素养让我一度认为我是九年义务教育漏网之鱼,其他的自行看剧体验吧,今天想讲一下21集,小金鱼解密驸马的密信的情节——基于python实现反切注韵法的中国式密码学

反切注韵法解密

毕竟也曾是个国学爱好者,看剧时候,第一次听到反切注韵法,我就知道我不配了,一顿百度猛如虎,先上链接解释下什么是反切注韵法,毕竟不是国学科普,这里就不复制了,感兴趣的直接跳链接吧

  • 反切-百度百科
  • 《御赐小仵作》里提及的反切注韵法是什么意思啊?

下面进入正题之前还需要先了解一个库python的拼音库:

  • Python 中拼音库 PyPinyin 的用法

# 安装库-拼音库和去除中文标点符号的库
!pip install pypinyin -ihttps://pypi.tuna.tsinghua.edu.cn/simple
!pip install zhong -ihttps://pypi.tuna.tsinghua.edu.cn/simple# 先导入母本诗词
m1 = "桃花口,静水旁,幼子垂丝,微澜皱,媚娘采荇,清波荡,染浮光。"
m2 = "春花渐谢夏叶宽,月沉横桥饵光庞。渭水怀秋,无尽秋愁泊云来。灞陵伤别,多少相思烟雨中。淦,饿,冤,北,永"
# 这里说明下,网上说这里是华点,密码对不上,道具是随便弄的,这个我没去深究,毕竟还有扬州码子,还要截图密文太麻烦,# 这不重要,主要是解密过程中缺少韵母:an,e,van,ei,iong
# 所以我在后面增加了几个字
# 有意思的是,百度中又了解到一个知识盲点,三合复韵母,有兴趣的自行百度# 导入库
from  pypinyin import pinyin
# 去除中文标点符号
import re,string
from zhon.hanzi import punctuation
# 古文是无标点的,为了方便阅读加了标点,这里再去除掉
m1_ = re.sub(r"[%s]+" %punctuation,"",m1)
m2_ = re.sub(r"[%s]+" %punctuation,"",m2)# 由于前文提到这里的道具是凑的,就不解析剧中密码本了
# 这里我把驸马密信的内容给扣下来了,做一个反向解析,即由密信内容解析出原来的密码数字def get_paswd_info(sentence):"""解析母本拼音信息"""# 用于存储解析后的声母shm_list = []# 用于存储解析后的带声调的韵母ym_list = []# 用于存储解析后的不带声调的韵母ym_list_only = []for word in sentence:# 声母解析s = pypinyin.pinyin(word,style=pypinyin.INITIALS)[0][0]shm_list.append(s)# 带声调的韵母解析 - 带声调,声调在各个拼音之后,用数字 [1-4] 进行表示y = pypinyin.pinyin(word,style=pypinyin.FINALS_TONE3)[0][0]ym_list.append(y)# 不带声调的韵母解析y_ = pypinyin.pinyin(word,style=pypinyin.FINALS)[0][0]ym_list_only.append(y_)return shm_list,ym_list,ym_list_only# 密信内容
info = """吾名萧恒,乃文宗朝监察御史,今留此密文,望后世饱学而无畏之士,解鬼宅之谜、破残局,得吾自沉之地,使此沉冤得见天日,还剑南忠义之魂以清白之名。太和九年,文宗帝欲根除北司之祸,吾奉密旨宣剑南节度使陈璎,领兵入京策应,陈璎接旨即行,却不料甘露事败,宦党挟天子而屠群臣,陈璎一众义师被诬谋反。吾携密旨突围,却遭围堵重伤,不得已跳崖以求死地后生。幸得一采药巫医相救,然昏迷月余,苏醒之时已无力回天,宦党更是借圣谕,以英烈之名与郡王爵位相加,欲诱吾现身,取吾命以灭证据,吾唯恐一步踏错,非但洗冤无望,反牵连更多无辜,无奈之下在巫医染病西归后,承其衣钵,藏居于关岭县平乐镇以图后事。幸得仵作楚家照拂,吾一日不敢忘身负之重托,然关岭县地势险要,与外界相通者唯有一滑索,宦党势力于西南之搜捕从未停歇,吾双腿已废,不良于行,县中官员又频对潜逃于此之剑南节度使余众,痛下杀手,吾始终未得机会与长安联络。后有宦官独自追查至吾隐居处。吾侥幸杀之,藏其尸首与凶器于院中墙内,以为存证。奈何残躯病体每况愈下,时日无多,虽心有不甘,却唯能做此安排。吾写此书自沉泥沼,以天地为棺,藏沉冤以期后人明法"""# 同样地,对密信内容做去除中文标点符号处理
info_ = re.sub(r"[%s]+" %punctuation,"",info).replace("\n","")# 由母本(前面的两首诗)解析出密文的声母和不带声调的韵母
mw_shm = get_paswd_info(m1_)[0]
mw_ym =  get_paswd_info(m2_)[2]def creat_mw_num(info,mw_shm,mw_ym):"""构造解析后的密文数字"""first_num = []shm = get_paswd_info(info)[0]for i in shm:if i:# 在密文声母中搜索位置first_num.append(mw_shm.index(i))else:# 这里没有声母的使用0代替first_num.append(0)second_num = []      ym = get_paswd_info(info)[2]for j in ym:#在密文韵母中搜索位置second_num.append(mw_ym.index(j))third_num = []sd = get_paswd_info(info)[1]for k in sd:# 解析后的声调1-4third_num.append(k[-1])# 使用zip进行压缩解包return list(zip(first_num,second_num,third_num))# 输入密信,和密文声母韵母————》得到驸马密信的实际密文creat_mw_num(info_,mw_shm,mw_ym)

解析后的密码如下图所示

# 生成用于测试的密码
message = "几多轮回少一人轮回几多到凡尘"
creat_mw_num(message,mw_shm,mw_ym)def send_message(num_info,mw_shm,mw_ym):"""密码转信息"""info = []for num in num_info:info.append(mw_shm[num[0]]+mw_ym[num[1]]+num[2])return info# 用前面生成的测试密码测试
num_info = [(3, 32, '3'), (19, 29, '1'), (11, 0, '2'), (1, 14, '2'), (4, 30, '3'), (0, 32, '1'), (20, 8, '2'), (11, 0, '2'),(1, 14, '2'), (3, 32, '3'), (19, 29, '1'), (19, 30, '4'), (21, 36, '2'), (8, 8, '2')]
send_message(num_info,mw_shm,mw_ym)
# 运行结果如下图所示

写在最后

综上所述,外加后面解析《诗经》密信时的凡尔赛发言,小金鱼绝对是个移动的计算机,可能是未来机器人穿越回去的,哈哈哈、、、、、这记忆力,计算力,人力有时穷啊!!!!

python解密《御赐小仵作》反切注韵法相关推荐

  1. 《御赐小仵作》:一部用心的“爆款”小剧

    近期各大古装剧都接近尾声,<长歌行>多次火上热搜,但由于<御赐小仵作>宣传不佳,热度一直不够,但是随着后期的放映,使得其热度逐渐增高. <御赐小仵作>是一部古装悬疑 ...

  2. python 贪吃蛇小游戏代码_10分钟再用Python编写贪吃蛇小游戏

    Python编写贪吃蛇 前不久我们公众号发布了一篇C++编写贪吃蛇小游戏的推文,反响空前.看来大家对这类简单易上手小游戏还是很喜爱的. 恰逢2018年IEEE Spectrum编程语言排行榜新鲜出炉, ...

  3. Python re 模块中,如何使用反斜杠 “\“分割字符串?

    Python 语言使用反斜杠(\)作为转义符,对一些字符进行转义(escape),例如 "\n" "\r\n" 等.所以当 Python 字符串中如果出现反斜杠 ...

  4. python英语词汇读音_利用Python制作查单词小程序(一):抓取来自百度翻译的单词释义和音标...

    小编在学习英语的时候,遇到不认识的英语单词,会用百度翻译来查询单词的释义和音标,并播放单词的读音.为了便于复习和记忆,需要将单词的释义和音标以复制粘贴的方式保存到本地. 这个过程非常繁琐,于是小编就想 ...

  5. 如何用python做考勤_【python爬虫教程 考勤】如何用Python实现一只小爬虫,爬取拉勾网...

    python爬虫入门教程全集 千锋官网上有一些是零基础入门学习的很不错 如何用Python实现一只小爬虫,爬取拉勾网 1.首先打开拉,并搜索"java",显示出职位信息就是我们的目 ...

  6. 五一小长假,Python爬虫接单小高潮,程序员5天赚2W

    前言 距五一小长假只有几天啦,记得买回家的票哦~ 每年五一前后,都会是Python兼职接单的小高潮,这段时间各个行业对爬虫类和数据分类的需求会暴增!圈子里很多朋友双休都没闲着,两天赚上万的不在少数. ...

  7. Python 练习-名片管理小程序

      Python基础知识的小综合练习. 需要实现的功能: 1.启动终端执行程序后,出现如下界面(新增,显示全部和查询) 2.通过相应的选项可以实现相应的功能 3.选择查找用户后,如果找到用户,提示用户 ...

  8. 微信小程序获取用户手机号码,Java后台servlet解密(微信小程序调用微信支付也是大致的流程)

    本篇记录说明 微信小程序获取用户手机号码,Java后台servlet解密(微信小程序调用微信支付也是大致的流程,详细内容可私信交流) (第一次写博客,写得不好的地方见谅,面向新手,大佬请无视,不喜勿喷 ...

  9. Python上下文语法with小述

    Python上下文语法with小述 本文环境python3.5.2 上下文语法with 该语法糖主要便于在Python的编程过程中,能够有效管理防止编程过程中,对有关资源编程时忘记释放的问题,比如通过 ...

最新文章

  1. 不要再代码里频繁的new和delete
  2. 【遥感数字图像处理】基础知识:第五章 遥感图像增强处理方法总结
  3. 什么是VGA光纤收发器?
  4. Bootstrap简介
  5. 2017.3.3 双栈排序 失败总结
  6. matlab 矢量化编程(二)—— 使用 meshgrid
  7. Python入门--面向过程,面向对象,类与对象
  8. ThinkPHP---案例1登录登出和添加部门
  9. C++中的explicit关键字 - 抑制隐式转换(转)
  10. 计算机内存体系与Java 内存模型
  11. 宁浩网sql注入工具_国产SQL注入漏洞测试工具 - 超级SQL注入工具(SSQLInjection)...
  12. NitroShare 是一个局域网文件传输工具,支持 Windows、OS X 和 Linux。基于 Qt 开发。
  13. 7. 堆(宋红康笔记)
  14. CDRX4X5X6X7X8下载安装失败的原因教程分享(CorelDRAW)
  15. 阿西莫夫机器人三定律或已过时?伯克利教授定义AI发展“新三原则”!
  16. html设置为壁纸win10,win10系统怎么设置桌面壁纸
  17. [答疑]能举一个人取代业务实体的例子吗
  18. 网站虚拟主机是什么?(什么是虚拟主机空间)
  19. 共读ulord项目分析(一)
  20. MATLAB画一个球

热门文章

  1. 新一代人工智能院士高峰论坛-视觉预训练大模型及其在智慧城市中的应用分论坛顺利举办
  2. 【ppt课件制作】Focusky教程 | 自制模板
  3. 三容水箱液位控制系统_三容水箱液位控制系统的PID
  4. 如何制作patch文件?
  5. revit开发之判断两条直线是否平行
  6. 利用AT89C52定时器输出可调PWM
  7. c语言交通灯控制设计和原理图,十字路口交通灯控制设计(附电路图及源代码).doc...
  8. CSDN学霸课表——信息安全工程师(软考中级)
  9. android 动画原理源码分析之Animation
  10. 记录一次微信公众号开发遇到的问题,提示二级域名未备案