摩斯密码由点和划表示,由于只由两种基本符号组成,也可以使用0和1的二进制表示,0代表点,1代表划,这样就可以使用二进制将摩斯密码进行二次编码。
有了二进制编码这样的想法,提示卡上给出的字符就很容易理解了——英文字母最高到f,它们都是二进制码的十六进制表示。
真正困扰程陌的是下一步,将十六进制转换成二进制再对应到摩斯密码表上。
首先对于【1f2c46】,转成二进制为【0001 1111 0010 1100 0100 0110】,则对应的摩斯电码为【···-,---- ,··-·,--··,·-··,·--·】,转换成对应字符则变成【vfzl】,被解出的一串符号根本无法与提示密码对应上。
程陌的解码过程被卡在这一步,迟迟没有进展,可徐清最后给出的那句提示却让他终于茅塞顿开!
徐清说的是,“有效位”。
如果考虑了有效位的话,一切将大不相同。
观察一下这七组密码,可以发现奇数位的数字最大不超过四,而由一位十六进制转换的二进制数正好是四位。那么是不是可以这样猜测——奇数位的数字并不编码摩斯电码,而是作为其后偶数位数字的有效位进行指示?
按照这样的思路对七组密码重新解码,首先对于【1f2c46】,1、2、4分别指示其后的f、c、6的有效位数。根据上面的分析,【fc6】解成摩斯电码为【----,--··,·--·】,分别取低1位、低2位以及全4位,可以得到【-,··,·--·】,对应的摩斯电码是……
【t,i,】——ti!
是这样没错!原来奇数位真的是有效位,并不参与真正的解码过程!难怪之前一直毫无头绪。程陌暗自捏了把拳头,按照这样的思路将剩下的提示卡全都译了出来。
【2d383d】——【·-,···,-·-】——ask。
【423f3a】——【··-·,---,·-·】——for。
【3d1e4b】——【-·-,·,-·--】——key。
【1f401e】——【-,····,·】——the。
【402c2f】——【····,··,--】——hi。