[SWPUCTF 2021 新生赛]traditional

Q现在,给你一组由八卦图方位组成的密文,你能破解出其中的含义吗?

             震坤艮 震艮震 坤巽坤 坤巽震 震巽兑 震艮震 震离艮 震离艮

首先,让我们先了解一下八卦与二进制的对应关系

根据二进制数的规定:有,用1表示;无,用0表示。我们可以得出八卦各卦阳爻和阴爻的二进制数。下面我们写出八卦各卦阳爻的二进制数(即有阳爻为1,无阳爻为0):

          坤:黑黑黑,卦符阴阴阴,二进制数为000 

          艮:黑黑白,卦符阴阴阳,二进制数为001

          坎:黑白黑,卦符阴阳阴,二进制数为010

          巽:黑黑白,卦符阴阳阳,二进制数为011

          震:白黑黑,卦符阳阴阴,二进制数为100

          离:白黑白,卦符阳阴阳,二进制数为101

          兑:白白黑,卦符阳阳阴,二进制数为110

          乾:白白白,卦符阳阳阳,二进制数为111

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

另外,了解一下chr(),

chr(...)

 chr(i) -> character   

 Return a string of one character with ordinal i; 0 <= i < 256.

参数是0 - 256 的一个整数,返回值是当前整数对应的ascii字符。参数可以是10进制也可以是16进制的形式。

例如:

十六进制:>>> print chr(0x30), chr(0x31), chr(0x61)

                         0 1 a

十进制:>>> print chr(48), chr(49), chr(97)

                        0 1 a

Answer:

dict = {'乾':'111','巽':'110','离':'101','艮':'100','兑':'011','坎':'010','震':'001','坤':'000'}
c= '震坤艮 震艮震 坤巽坤 坤巽震 震巽兑 震艮震 震离艮 震离艮'
t=c.split(' ')  #split方法用于拆分字符串并将其存储在列表中。内置方法返回字符串中的单词列表,使用“分隔符” 作为分隔符字符串
f=''
for i in range(len(t)):
    s = ''
    for j in range(len(t[i])):
        k=t[i][j]
        a=dict[k]  #找到第i组每个八卦对应的二进制
        s+=a  #将第i组所有八卦对应的二进制相加  
    ch=chr(int(s,2))  #int(s,2)将二进制转化为十进制,chr()将该值对应到ASCII字符
    f+=ch
print(f)

最后运行得到:Da01sall

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值