[转]密码破译 从数字到拼音 再到汉字

条纹海豚 2009-06-20 13:30

破解密文

20 8723 643 14 5206 52 79 843 6306 843

已知,这份电报的每一个阿拉伯数字代表一个汉语拼音字母。一组数字就是一个音节。其中:
1是Q
5是F
8是Z。
请你根据普通话声母和韵母的分配规律进行破译,看他的内容是什么。


破解过程:
由简到繁
我们发现 最短的密码组是两位数字,共有 20 14 52 79 四组。
而这四组中,只有1是知道的,他代表q
那么,汉语拼音中,声母是Q,韵母只有一个字母的音节,只有两个,分别是QI和QU,小写为qi 和 qu
好了,这说明14 不是qi,就是qu


顺藤摸瓜
我们发现 次短的密码组是三位数字,共有 643 843 843 三组,其中843 出现两次,实际只有而组,643 843
根据上面的推断,4 不是i 就是u ,和已知的8是Z 小写是z
那么,汉语拼音中,声母是z 韵母长度是两个字母,韵头是i 的音节不存在,只有韵头是u 韵尾是o 的唯一组合
好了,这时,不但锁定了4 就是u ,而且锁定了3 就是o
这时,只有6 这个声母还没有确定,也就是说,643 他 或者是DUO 或者是TUO 或者是LUO 或者是GUO 或者是KUO 或者是HUO 或者是CUO 或者是SUO
或者是duo 或者是tuo 或者是luo 或者是guo 或者是kuo 或者是huo 或者是cuo 或者是suo 八选一


捉住尾巴
我们发现 较长的密码组是四位数字,共有 8723 5206 6306 三组,其中6306 中的两个6 ,既出现在声母位置,又出现在韵尾位置,这时可以断定,6就是G 小写是g
根据顺藤摸瓜是 已经发现3 就是o ,那么,6306 唯一的结果就是gong ,这样自然又把0 确定了下来,是N 小写是n


穷追猛打
既然确定了0 就是n ,那么,5206 中的20 ,要么是ang 要么是eng 要么是ong
而根据密文最短组合中,有一组是20 ,则说明20组合 是可以当零声母音节使用的 ,汉语拼音中 没有on 独立音节,只有 an 和 en
此时我们发现 8723 ,8已知是z ,3 也已知是o ,则23组合 必定是ao ,而不是eo ,因为汉语拼音中,没有eo 音节。
这说明2 就是a
而8723 ,已经知道了 三个字母 8是z 2是a 3是o ,则可以锁定7 必定是h ,因为ao 虽有iao 韵母组合,但不存在ziao音节组合,只有zhao 组合。
至此,已知7 是h ,那么, 79 不是he 就是hu ,而u 已经确定是4,所以,9 只能是e


最后收官
我们发现 1 2 3 4 6 7 8 9 0 都已破译,分别对应q a o u g h z e n ,就剩下5 等待继续破译了。
与5有关的音节有两个,一个是 5206 ,另一个是52 ,也就是说,52 既可以独立成为音节,也可以作为声韵开头。
已知2是a ,206是ang ,那么 5206 和 52 ,分别有以下
bang pang mang fang dang tang nang lang gang kang hang zang cang sang
ba pa ma fa da ta na la ga ka ha za ca sa
十四种可能。
而根据双声叠韵 二字组词 的结果看,只有 fang(方) fa(法),可以组成一个常用词——“方法”。所以,可以断定 5 就是f





破解明文:
20 8723 643 14 5206 52 79 843 6306 843
an zhao guo qu fang fa he zuo gong zuo
按照过去方法合作工作

每一个阿拉伯数字代表一个汉语拼音字母。一组数字就是一个音节。其中:1代表q, 2代表a, 3代表o, 4代表u, 5代表f, 6代表g, 7代表h, 8代表z, 9代表e, 0代表n。

神奇的地球 2009-06-20 15:26

赞扬

神奇的地球 2009-06-20 15:26

如果用密码还不如发明一种任何人都看不懂只有自己人能明白的文字

条纹海豚 2009-06-20 15:53

如果设计出一种统计频率和现有人类文字不一样的语言出来自然是最好的了...比如那比鸟奴手稿...

华~ 2009-06-20 16:34

这个非常赞扬...
所以破译密码的同志们很有爱阿...

samhrc 2009-06-20 21:31

[quote]如果用密码还不如发明一种任何人都看不懂只有自己人能明白的文字
神奇的地球 发表于 2009-6-20 15:26 [/quote]

风语者?

Lucifer 2009-06-26 08:38

[i=s] 本帖最后由 Lucifer 于 2009-6-26 08:48 编辑 [/i]

[quote]如果设计出一种统计频率和现有人类文字不一样的语言出来自然是最好的了...比如那比鸟奴手稿...
条纹海豚 发表于 2009-6-20 15:53 [/quote]
发明那种语言,也可以。比如女书。
好一点的加密技术可以让一个字母在密文中被多种字母表示。比如我选定密码是123456,密文是This is a dress.,如下写出:
This is a dress.
1234 56 1 23456

然后按照数字顺序加密:
This is a dress.
1234 56 1 23456
Ujlw ny b fuixy.

显然其中的s被w、y、x代替,因此不能进行概率分析。
我是最早在凡尔纳的《大木筏》中得知此方法的:

[quote]  雅里盖茨法官神情骇人,他目不转睛的盯着文件上的字,喃喃地说:
  “最后几个字母!再试试这最后几个字母!”
  这是最后一线希望了。
  他的手抖得很厉害,几乎没法写字,他终于把奥脱加名字的每个字母写在
最后六个字母上面,就象刚才把它们写在开头六个字母上一样。
  他惊呼了一声。他首先发现这六个字母按字母表顺序,都在拼成奥脱加名
字的六个字母之后,因此,完全可以编号,组成一个数目字。
  果不其然,他把文件密码字母,减去写在上面的字母,就得出下式:
  Ortega
  432513
  Suvjhd
  这样组成的数目是432513。
  但是这个数目字是否正是用来写出文件的那一个呢?会不会与前面试过的
字母一样,也是假的呢?
  而这时,叫喊声愈来愈大,这是人群发出的同情的呼喊声。还有几分钟
了,犯人就只剩这几分钟的活头了。
  弗拉戈索,痛苦得简直要发疯,他冲出了房间!⋯⋯他要最后见恩人一
面!他想冲到这阴森、可怕的押送队伍前面,拦住他们,高声叫喊:“请别杀
这个正直的人!别杀他!⋯⋯”
  而雅里盖茨已经把得出的数目字,排列在段落开头的几个字母上面,一遍
一遍地重复这个数目宇,直到足够多,作法如下:
  432513432513432513432513
  phyjslyddqfdzxgasgzzqqch
  然后再按字母顺序算出真正的字母,他读出下文:
  Le veritable auteur du vol de ⋯⋯
  (真正盗窃⋯⋯的人)
  他高兴得叫了起来!432513,这个数字就是找了那么久而未能得到的数
字!奥脱加的名字让他把这个数目字找了出来!他终于找到了文件的线索,这
文件会无可辩驳地证明乔阿姆· 达哥斯塔无罪,不需要再读下去了,他冲出书
房,然后跑到大街上大声喊道:
  “停一下!停一下!”
  法官在人群中冲出一条路来,片刻间就跑到监狱门口。这时,犯人正要离
开监狱,他的妻子儿女们绝望地紧紧依偎在他身旁。
  他来到乔阿姆· 达哥斯塔面前,却说不出话来,手里挥动着那份文件,最
后嘴里终于喊出了这句话。
  “无罪!无罪!”
  法官一到刑场,整个押送队伍已经站住不动了。震彻云霄的呐喊声在他身
边响个不停,这是所有人发自肺腑的呼声:
  “无罪!无罪!”
  接下来是一片寂静。即将宣布的话,大家一句也不想漏掉。
  雅里盖茨法官在一条方凳上坐了下来,这时米娜、贝尼托、马诺埃尔、弗
拉戈索簇拥着他,而乔阿姆· 达哥斯塔则把雅基塔搂在胸前,法官先前把文件
的末一段用数目字写出来,根据这些数字清清楚楚地写出真正的字母,换掉密
码字母,然后断词、断句,随即开始高声朗读。
  在一片肃静之中,他读道:
  “1836 年1 月22 日夜里盗窃钻石和杀害押运士兵的真正凶手,不是那位
被不公正地判处死刑的乔阿姆· 达哥斯塔,而是我,钻石矿管理处的一个小职
员;是的,是我一个人,在这里我签署自己的真实姓名奥脱加。”[/quote]

K2CrO7 2009-06-27 16:44

LZ 发的资料里

“那么,汉语拼音中,声母是z 韵母长度是两个字母,韵头是i 的音节不存在,只有韵头是u 韵尾是o 的唯一组合”

那ZUI呢= =

Lucifer 2009-06-27 17:21

[i=s] 本帖最后由 Lucifer 于 2009-6-27 17:55 编辑 [/i]

Phyjslyddqfdzxgasgzzqqehxgkfndrxujugiocytdxvksb
xhhuypohdvyrymlhuhpuydkjoxphetozsletnpmvffovpd
pajxhyynojyggaymeqynfuqlnmvlyfgsuzmqiztlbqgyugs
qeubvnrcredgruzblrmxyuhqhpzdrrgcrohepqxufivvrplp
honthvddqfhqsntzhhhnfepmqkyuuexktogzgkyuumfvij
dqdpzjqsykrplxhxqrymvklohhhotozvdksppsuvjh.d.
这是原著中提到的那句话。估计凡尔纳为此也花了不少时间。而且似乎有错误,我写程序怎么读也读不出来(正确的,只有部分,似乎“phyjs”里面的y就错了)。

条纹海豚 2009-06-27 17:24

记的凡尔纳弄过一个要把四角折叠就可以看出写的是"动中之动"的东西...