1. 程式人生 > 實用技巧 >Crypto入門 (六)冪數加密(雲影密碼)

Crypto入門 (六)冪數加密(雲影密碼)

前言:

  這次題目說的是冪數加密,但是它本身

冪數加密:

 題目:8842101220480224404014224202480122

分析一波,只有8、4、2、1、0五種數字,然後先根據提示百度一下冪數加密,https://baike.baidu.com/item/%E4%BA%8C%E8%BF%9B%E5%88%B6%E5%B9%82%E6%95%B0%E5%8A%A0%E5%AF%86%E6%B3%95看了看人家是用2進製得冪次來表示不同字母得,特徵為:只含有012345這六個數字,跟咱們得不符合呀,繼續百度,https://gist.github.com/wh1t3p1g/ffd15270914492491e18ff9f070eab2b

,下面給出該原話:

1 【雲影密碼】
2 此密碼運用了1248程式碼,因為本人才疏學淺,尚未發現有過使用的先例,因此暫歸為原創密碼,若有密碼界前輩認為不妥,
3 請指出此密碼或類似密碼的普遍使用歷史並附寄一份到我站內郵箱,我將以最快速度核查並改正。由於這個密碼,我和片風雲影初識,為了紀念,將其命名為“雲影密碼”,原文請見謎題大全精華區。
4 原理很簡單,有了1,2,4,8這四個簡單的數字,你可以以加法表示出0-9任何一個數字,例如0=28,7=124,9=185 這樣,再用1-26來表示A-Z,就可以用作密碼了。
6 為了不至於混亂,我個人引入了第五個數字0,來用作間隔,以避免翻譯錯誤,所以還可以稱“01248密碼”。

題目:12401011801180212011401804
第一步,分割,即124 1 118 118 212 114 18 4
第二步,基本翻譯,例如124可以表示7,也可以表示16(但不可能是34,因為不會超過26),所以可以放在一邊,翻譯其他沒有異議的,
可得:124 a s s w o 18 d
第三步,推測得出明文。可以推測後面的18表示r,前面的為p最合適。
明文:password(密碼).(五)四位乘法密碼——(密文:I Q V L N J O P X;金鑰:1234)

look完該作者說的大概就明白它啥意思了,也就是0為分割,每部分分數字和對應字母,或者是部分數字和對應字母,中間存在會出現歧義得情況,先分析咱們這個會不會出現歧義,經過分析咱們這個可能會出現歧義,但是我從查了別人寫的資料都沒提到這個會出現歧義得點,他們都是用每段數字總和來算得,考慮到出現歧義還需要人工判斷,我們先來個按照每段數字總和算得方法,如果出現很明顯得問題我們就再分析,下面給出python程式碼:

with open(r'F:/桌面/tmp/2.txt','r') as f:
    data = f.read()
    print(data)

list = data.split('0')
print(list)

datalist=[]
def dlist(list):
    d = 0
    for i in list:
        for j in i:
            d += int(j)
        datalist.append(d)
        d=0
    return datalist
datalist = dlist(list)

def str(datalist):
    s=''
    for i in datalist:
        s += chr(i+64)
    return s
print(str(datalist))

下面給出結果,感覺還挺順利得:

1 8842101220480224404014224202480122
2 ['88421', '122', '48', '2244', '4', '142242', '248', '122']
3 WELLDONE

提交flag,發現對了,那就是這樣了,如果不成功得話那咱們還得分析 有哪些字母可能是其他得,這個地方目前還沒想好怎麼寫程式碼,主要可能還是人工處理為主

參考連結:

https://tool.oschina.net/commons?type=4

https://gist.github.com/wh1t3p1g/ffd15270914492491e18ff9f070eab2b