【趣味玩法】 将WPS用于加密通信(二)

懒得批爆

创作者俱乐部成员

以社区大佬的能力【趣味玩法】 将WPS用于加密通信(一)中的两段密文应该是轻松拿捏,所以本帖准备一段较为复杂的密文,逐步解释如何制作、解密的有兴趣的同学可以点赞收藏慢慢欣赏。

准备密钥基础数据

  1. 拉丁字母(也称为罗马字母)是多数欧洲语言采用的字母系统,是世界上最通行的字母文字系统。它源于希腊字母,而希腊字母又是由腓尼基字母演变而来的。在中国,汉语拼音方案也采用了拉丁字母,同时中国部分少数民族(如壮族)创字或改革文字也采用了拉丁字母。

拉丁字母主要有26个,分别是:Aa、Bb、Cc、Dd、Ee、Ff、Gg、Hh、Ii、Jj、Kk、Ll、Mm、Nn、Oo、Pp、Qq、Rr、Ss、Tt、Uu、Vv、Ww、Xx、Yy、Zz

虽然拉丁字母系统有26个字母,但在拉丁文中,实际上并没有使用J、U和W这三个字母,而是以I、V、V代替。因此,在拉丁文的语境中,拉丁字母的数量会有所不同。

  1. 汉语拼音

声母表:b、p、m、f、d、t、n、l、g、k、h、j、q、x、zh、ch、sh、r、z、c、s、y、w

单韵母表:a、o、e、i、u、v

复韵母表:ai、ei、ui、ao、ou、iu、ie、ve、er、an、en、in、un、vn、ang、eng、ing、ong

整体认读音节:zhi、chi、shi、ri、zi、ci、si、yi、wu、yu、ye、yue、yin、yun、yuan、ying

韵母声调:ā、á、ǎ、à、ō、ó、ǒ、ò、ē、é、ě、è、ī、í、ĭ、ì、ū、ú、ǔ、ù、ǘ、ǚ、ǜ

韵母声调中的ǖ、ǘ、ǚ、ǜ对应的拉丁字母为V

  1. 九宫格对应数字

此处的九宫格主要是指手机的拼音输入法下的九宫格键位,将拉丁字母转为阿拉伯数字后,也是密钥的一部分。

  1. 斐波那契数列

斐波那契数列:从第三项开始,每一项都等于前两项之和,F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)「n≥3,n∈N」

  1. 罗马数字

  1. 帕多瓦数列

与斐波那契数列类似的还有帕多瓦数列,从第四项开始,每一项都等于前面2项与前面3项的和。

那么如果我们自定义将汉语拼音的声母、韵母与拉丁字母对应错位制作成密钥,并换算为九宫格对应的数字放在各位的面前,在没有密钥的情况下,运力再高深的计算机能算出来吗?

答案是肯定的,计算机先通过穷举法枚举各种组合方法得到密钥,再通过密钥获得汉语拼音,最后通过汉语拼音得到汉字。

不过最后一步应该会被卡住,因为前不久在社区中提了一个问题,至今无人解答,WPS文字中这个功能可否逆向操作?

结合社区的回答、微信的沟通、百度、Google中搜索到的各种方法以及AI给出的方法来看,卡住不是因为无法完成,而是目前尚无有效快捷的方法将通篇大量的汉语拼音转换为汉字(同音字太多了),汉语拼音的字母完全一样,读音也一样,但意思不一样,譬如:

此处感谢@清华学弟任泽岩 提的灵感。

至此,再将阿拉伯数字转换为罗马数字,那么计算机能否得出结果呢?

又或者使用自创的等差、等比数列作为密钥对照表。


📌

好了密钥的基础数据准备好了,就要开始制作密钥表了


制作加密密钥

先将密钥数据整理,这里为了简单介绍,仅使用拉丁字母、九宫格数字和罗马数字进行转换,

这里简单的介绍下加密的思路,仅作为参考,调整对应拉丁字母、罗马数字和九宫格的顺序,

最后制作好的密钥如图所示

当然也可以根据个人兴趣加入更复杂的斐波那契数列、帕多瓦数列、等差数列、等比数列或其他。

示例明文转密文

明文→汉语拼音→拉丁字母→错位拉丁字母→九宫格数字→罗马数字

以上用公式快速的将汉语拼音转换为罗马数字,接收方使用公式对应密钥快速的将密码(罗马数字)转换为汉语拼音,虽然还没找将汉语拼音快速高效的转换为汉字的方法,不过也不影响阅读了吧!

需要加密的文字

金山办公在线服务协议https://www.wps.cn/privacy/full_account/中的一段文字

第一步:将汉字转换为拼音

这一步使用拼音指南就行了

第二步,将得到的拼音与汉字分离

这里又让我想起了伤心的事情,也是前不久提的一个问题,至今没有得到解答【拼音指南】 拼音指南中的拼音如何与文字拆分开?

不过通过万能的互联网和万能的AI还是找到了办法,通过友商能帮我完成操作,不要气馁,师夷之长技以制夷

(这一功能在Windows版WPS已实现,Mac版算了吧,Mac上的WPS什么功能都不支持

第三步,将明文与拼音彻底分离

社区中有各类分离文本替换文本的方法,这里就不列举了(可以用Windows版WPS直接得到拼音字符串),得到完整的汉语拼音。

chúfēiníntóngyìběnxiéyìdesuǒyǒutiáokuǎn,fǒuzénínwúquándēnglùhuòshĭyòngrènhéjīnshānbàngōngzàixiànfúwù。níndēnglù、kāiqĭyĭjízàikāiqĭběnfúwùzhuàngtàixiàjìnxíngwéndàngchákàn、biānjí、bǎocún、shàngchuán、xiàzàiděngshĭyòngběnfúwùdexíngwéiyǒukěnéngzàihélĭhéfǎdeqíngkuàngxiàbèiwǒménshìwéiníntóngyìběnxiéyìquánbùtiáokuǎn,bìngtóngyìshòuqíyuēshù。

第四步,格式化汉语拼音

汉语拼音的声调主要在韵母上,即:a、o、e、i、u、v(ǖǘǚǜ在拉丁文中以v代替),这个步骤需要将有声调的拼音韵母转为拉丁字母。

可以参考这张表

文本替换公式不太熟练,只好挨个儿用SUBSTITUTE替换,有大神可以帮忙简化下这个公式么话说这个步骤是否可以用REGEXP完成么,感激不尽。

chufeinintongyibenxieyidesuoyoutiaokuan,fouzeninwuquandengluhuoshiyongrenhejinshanbangongzaixianfuwu。nindenglu、kaiqiyijizaikaiqibenfuwuzhuangtaixiajinxingwendangchakan、bianji、baocun、shangchuan、xiazaidengshiyongbenfuwudexingweiyoukenengzaihelihefadeqingkuangxiabeiwomenshiweinintongyibenxieyiquanbutiaokuan,bingtongyishouqiyueshu。

第五步,汉语拼音转为密文

按照加密密钥的规则,将汉语拼音转为密文

首先用将各个字符拆开

然后用XLOOKUP函数挨个儿转换

得到密文

拉丁字母密文:

罗马数字密文:

由于密文在接收方还需要解密,为了方便接收方用TEXTSPLIT函数将密文拆开映射,可在每个字符之间用特定字符隔开,示例中用||的键位见下图

附加一个九宫格不用分隔符号的的加密代码,期待有缘人

855577555977772944365777255533,777259995556535333599696693363355577729977725442555999885555889965,888555355533459999999334544353933699,44988995557777299999933555666334433555333555944494438855589448899443777999669992555339995555599443799665

解密

接收方通过加密密钥对密文进行解密

最后得到密文即可得到汉语拼音,并进行读取

在找到能快速将汉语拼音转换为汉字的方法前,还是只能口头阅读转换为汉字,或照着字母输入拼音查看明文😓😱

文中涉及到的文档和示例可参考:https://kdocs.cn/l/cunspC7rB209

https://pan.baidu.com/s/1XujD7nlX9lqvBXpNiH7z7A?pwd=6666


吐槽:5000字的限制太过分了,还好机智的把大段的代码用图片贴出来。

四川省
浏览 972
2
6
分享
6 +1
4
2 +1
全部评论 4
 
居然还有第二篇,先收藏了,后面跟小伙伴传密文玩儿
· 四川省
回复
 
话说双拼的原理不就是,声母韵母组合吗,不知道能不能逆转一下? 你说的替换那个可以用Unicode转成数字 然后在替换时候用unichar转想要的 =UNIQUE(SORT(TRANSPOSE(REGEXP(A2,".")))) =UNICODE(A6#) =SUBSTITUTES(A2,G6:G28,UNICHAR(H6:H28))
· 江西省
回复
这个替换真是太好用了
· 江西省
回复