揭开《猜姓》游戏的奥秘
曾见街头有人摆摊猜姓。摊主面前摆着七八张写着姓氏的纸片,只要有人说出那几张纸片上有他的姓氏,那几张纸片上没有,摊主立马就能准确说出他的姓氏来。
《猜姓》游戏与《猜年龄》游戏一样,运用的是二进制数与十进制数的换算知识。这两种游戏又都是最低级的密码游戏。
大家对电视剧中的发报场面很熟悉,这边一个发报员,那边一个收报员。发报员把要传送的信息编成密码(密文)发送出去,收报员收到电报密码(密文)后,对照密码本把密文翻译成明文就知道了发报员发送的信息。
《猜姓》游戏就是这样。摊主相当于收报员(处主动地位),他面前摆着的几张纸片就是密码本,其他参与者是发报员(处被动地位)。密码本是摊主编辑的,其他参与者对此毫不知情。
密码、密码本是这样生成的:
以6张写着姓氏的纸片外加一张姓氏对照表为例。
6张纸片就是要用6位二进制数作为系列密码。每张纸片表示一个二进制数数位。
因为最大的6位二进制数[111111]2=63,所以,能猜63个姓氏。如果是7张纸片,就是用7位二进制数为系列密码,能猜出[1111111]2=127个姓氏来。余类推。
先按顺序(也可打乱顺序)取《百家姓》中前(也可根据各地姓氏特点挑选)63个姓氏,顺次用十进制数编好序号(未加密的密码),就得出了姓氏对照表。如下:
姓氏对照表
1赵 2钱 3孙 4李 5周 6吴 7郑 8王 9冯 10陈 11褚 12卫 13蒋 14沈
15韩16杨 17朱 18秦 19尤 20许 21何 22吕 23施 24张 25孔 26曹 27严
28华 29金 30魏 31陶 32姜 33戚 34谢 35邹 36喻 37柏 38水 39窦 40章
41云 42苏 43潘 44葛 45奚 46范 47彭 48郎 49鲁 50韦 51昌 52马 53苗
54凤 55花 56方 57俞 58任 59袁 60柳 61酆 62鲍 63史
再把姓氏前的序号(密码)换算成二进制6位数(加密——为了使他人更难弄懂)。
赵 1=[000001]2
钱 2=[000010]2
孙 3=[000011]2
······
鲍 62=[111110]2
史 63=[111111]2
这些二进制6位数就是其对应的姓氏经过加密后的密码。(为什么要用二进制数作为系列密码?因为二进制数每个数位上的数字只有0或1两种选择,这样处理起来方便。)
然后,按数位顺序([C5C4C3C2C1C0])把0位是1的姓氏写在表一里,1位是1的姓氏写在表二里,2位是1的姓氏写在表三里,余类推。得出6张写着姓氏的纸片。每张纸是一个表。每个表中都有2×2×2×2×2=32个姓氏。如下:
表一(0位是1的姓氏)
赵 孙 周 郑 冯 褚 蒋 韩
朱 尤 何 施 孔 严 金 陶
戚 邹 柏 窦 云 潘 奚 彭
鲁 昌 苗 花 俞 袁 酆 史
表二(1位是1的姓氏)
钱 孙 吴 郑 陈 褚 沈 韩
秦 尤 吕 施 曹 严 魏 陶
谢 邹 水 窦 苏 潘 范 彭
韦 昌 凤 花 任 袁 鲍 史
表三(2位是1的姓氏)
李 周 关 郑 卫 蒋 沈 韩
许 何 吕 施 华 金 魏 陶
喻 柏 水 窦 葛 奚 范 彭
马 苗 凤 花 柳 酆 鲍 史
表四(3位是1的姓氏)
王 冯 陈 褚 卫 蒋 沈 韩
张 孔 曾 严 华 金 魏 陶
章 云 苏 潘 葛 奚 范 彭
方 俞 任 袁 柳 酆 鲍 史
表五(4位是1的姓氏)
杨 朱 秦 尤 许 何 吕 施
张 孔 曾 严 华 金 魏 陶
郎 鲁 韦 昌 马 苗 凤 花
方 俞 任 袁 柳 酆 鲍 史
表六(5位是1的姓氏)
姜 戚 谢 邹 喻 柏 水 窦
章 云 苏 潘 葛 奚 范 彭
郎 鲁 韦 昌 马 苗 凤 花
方 俞 任 袁 柳 酆 鲍 史
每张表中姓氏的顺序可打乱,那样更能迷惑人。到此,密码、密码本就编好了。
游戏过程就是一个“发报——收报——密文——明文”的过程。
发报——收报:摊主在编辑密码前就已经定义了1和0的意义,1表示有,0表示无。当其他参与者回答摊主那几张纸(表)上有他的姓氏,那几张没有时,就充当了一个被动的发报员,把自己姓氏的密码在不知情的情况下发送给了摊主。那几张纸上有,这张纸所代表的数位上的数字就是1,没有就是0。摊主收到了这些信息,就得出了对方姓氏对应的密码——一个二进制6位数(密文)。以下就是把(密文)翻译成明文了。
密文——明文:摊主收到的原始密码(一个二进制6位数)是一个经过了加密的密文,把这个二进制6位数换算成十进制数就得到了解密的密文,再把这个十进制数作为序号对照姓氏对照表(密码本),找出所对应的姓氏,就把密文翻译成了明文。对方姓氏是啥就明白了。
例如:有人说表三、表五中有他的姓氏,余没有。
就是说他的姓氏密码2位、4位上是1,其它数位上是0,这个数是[010100]2,换算成十进制数是
[010100]2=20,查姓氏对照表,20对应的姓氏是许。所以,这人姓许。
当然,实际操作起来没这么复杂。根据
[C5C4C3C2C1C0]2
=C5×32+C4×16+C3×8+C2×4+C1×2+C0×1
知二进制数0位、1位、2位、3位、4位、5位上的1所代表的十进制数分别是1、2、4、8、16、32。所以,只要记住表一、表二、表三、表四、表五、表六所对应的数分别是1、2、4、8、16、32就行。这样,只要有人说出那几张纸上有他的姓氏,只需把这几张纸对应的数加起来,所得和就是他的姓氏在姓氏对照表中的序号。对号入座就知道他姓什么了。
还以许为例,表三、表五中有,余没有。表三、表五分别对应4、16。4+16=20。查姓氏对照表,20对应许,所以他姓许。
实际玩这游戏时,每张纸片上不需标出表一、表二的字样,只要标上一个自己明白的记号就行。姓氏对照表也不需出示于人,可熟记于心,这样让人觉得更玄。