古典密码学②
初级密码学题,由蓝鲸安全平台提供
题目:失落的祝愿,文件地址:https://pan.baidu.com/s/1Xc2kxrQAxPS9AUJtZxXoVw
题干:RSA的考古学家在亚马逊河流尽头找到古代神庙遗迹,在破解了遗迹语言后,为了向先灵们致敬,用他们的密码系统加密了破译资料后离开了。
知识点:Maya numerals系统,RSA简单解密
目录
背景知识
Maya numerals
- 玛雅文明已知是人们热衷的研究领域,今天要介绍的时候玛雅数字系统。它是一个
六度(基数为20)的位置数字系统。数字有三个符号组成:零(贝壳形状)、点、条。这种结构构成的数字系统很精巧,对于加减乘除之列的运算在图像上可以直接展现:

- 玛雅人的数字也有“大小写”之分,这和中文很像,例如“一”对应“壹”,“二”对应“贰“等。玛雅人的数字大写是一些象形人头:


那么玛雅人的数字系统是如何统计大数字呢(20以上的数字):
- 如今的数字系统,使用的是10进制,16进制等这些现代人或计算机习惯的进制;但是玛雅人的进制无比神奇,他们的计数方法让玛雅人在天文学方面的研究非常先进,他们计算的太阳日,也就是现在的年为:365.2422天,与现在的研究非常接近(我们闰年+1平均下来玛雅人的更为精准)。他们的数字系统不再是单一进制,而是4位数字占比例不同
- 最高位:8000
- 次高位:400
- 第二位:20
- 第一位:1

题目解析
拿到题目后,发现第一个知识点需要识别出图形是什么密码。可以从题目的提示:失落、亚马逊,神殿等词汇联想玛雅人。根据上述玛雅人计数系统,判断出

根据上述玛雅人计数系统,判断出这三行符号是代表了3个数字,现将每个符号对应的数字找到,如下:

接着利用maya数字系统的计算式:a*8000+b*400+c*20+d*1可以得到以下三个数字,不难检查出这三个数都是素数。
1 | 1*8000+7*400+15*20+13*1 = 11113 |
然后,根据题目描述又想到RSA解密,而这三个数字猜测对应了p、q、e。
1 | P=11113 |
然后利用rsatool计算出私钥d,如果想了解具体怎么算的,需要知道欧几里得算法(又称辗转相除法)。

最后对密文进行解密plain = (cipher) ^d mod n,脚本如下:
1 | p = 11113 |
总结
此题脑袋比较大,需要联想到玛雅文明,大家了解下就好了,对敬佩玛雅人的智慧。