NSSCTF_Crypto_[SWPUCTF 2021 新生赛]traditional_writeup

一、题目

西方的二进制数学的发明者莱布尼茨,从中国的八卦图当中受到启发,演绎并推论出了数学矩
阵,最后创造的二进制数学。二进制数学的诞生为计算机的发明奠定了理论基础。而计算机现在改
变了我们整个世界,改变了我们生活,而他的源头却是来自于八卦图。现在,给你一组由八卦图
方位组成的密文,你能破解出其中的含义吗?
 震坤艮 震艮震 坤巽坤 坤巽震 震巽兑 震艮震 震离艮 震离艮

二、分析

八卦有8个,其表示方式为阳爻(横)和阴爻(断),信息量为8bit;
根据常识,对其编码,“横”表示“1”;“断”表示“0”;000~111共八种表示;
每3个卦为一个字符,共有8个字符;
具体转化过程:用二进制表示——>每9biit转换成一个十进制数字——>ASCII码对应的字符

三、知识

(一)python中的ord()函数与chr()函数

1.ord()函数:由字符得到对应的ASCII码数值
2.chr()函数:由数字得到对应的ASCII码字符

(二)八卦对应的二进制

八卦的信息量为8bit:乾三连,三个阳爻,111;坤六段,三个阴爻,000;

                                   离中虚,101;坎中满,010;震仰盂,001;艮覆碗,100;

                                   兑上缺,011;巽下断,110;

python字典定义如下:

dict = {'乾':'111','巽':'110','离':'101','艮':'100','兑':'011','坎':'010','震':'001','坤':'000'}

四、解题——python

dict ={'乾':'111','巽':'110','离':'101','艮':'100','兑':'011','坎':'010','震':'001','坤':'000'}
m= '震坤艮 震艮震 坤巽坤 坤巽震 震巽兑 震艮震 震离艮 震离艮'
t=m.split(' ')  #以空格为依据,对字符串进行分割,得到列表,该列表有8个元素,嵌套
f=''            #定义一个空字符串f,作为数据容器
for i in range(len(t)):#对新列表进行遍历
    s = ''             #定义一个空字符串s,作为数据容器
    for j in range(len(t[i])):#每个元素下还有三个小元素,嵌套
        chinese=t[i][j]             #chinese代表汉字八卦
        a=dict[chinese]             #找到该八卦对应的二进制
        s+=a                        #将第i组所有八卦对应的二进制相加
    ch=chr(int(s,2))        #int(s,2)将二进制转化为十进制,chr()将该值对应到ASCII字符
    f+=ch                   #将所有字符相加,得到8位字符串
print(f)

得到结果:Da01sall

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值