我正在構建一個或多或少簡單的加密。 現在經過一番模糊和擺弄之後,我遇到了一個我似乎無法找到解決方案的問題。基本數學(?)/簡單加密
在加密過程中,我把一個字符串作爲輸入,並將其轉換爲二進制數據與它做一些數學運算。經過「mathing」部分即時得到這樣的字符串:
56010479313713691637235922367138913625577411202663921330215486595
現在這一步之後,我的解剖串入對2 這樣的:
56 01 04 79 31 37 13 69 16 37 23 59 22 36 71 38 13 62 55 77 41 12 02 66 39 21 33 02 15 48 65 95
這是現在還是1串目的。我現在的問題是,我似乎無法組成一種方法,實際上一對一地將這些對與他們進行一些數學運算(之後我也想將結果轉換爲ascii或其他)。可能只是睡眠不足,但我似乎無法找到解決辦法,任何幫助,將不勝感激:)
編輯:我現在用的timgeb提供進一步處理我的代碼的功能。 現在我陷入另一個相當愚蠢的,讓我們稱之爲錯誤。
以下是從文件tmp.txt中讀取加密字符串(數字)的代碼片段,註釋說明了我猜測的其餘部分。 我現在的問題是,當我運行該腳本時,它會將int連接回字符串,但之後將數字對替換爲字母根本不起作用。
#***** Read from tmp.txt *****
alphaStr2 = linecache.getline('tmp.txt', 1)
alphaStr2 = int(alphaStr2)/123456789
alphaStr = str(alphaStr2)
#***** Split into pairs of 2 *****
alphaStr = " ".join(alphaStr[i:i+2] for i in range(0, (len(alphaStr) + 1), 2))
#***** Convert to list *****
numStr = alphaStr.split()
#***** Convert list content to int's *****
numStr = map(int, numStr)
#***** simple math to adjust to alphabet lenght of 51 (Aa-Zz) *****
numMath = lambda x: x/1.96078431372549
numStr = map(numMath, numStr)
#***** "round" float numbers to integer *****
numStr = [int(i) for i in numStr]
#***** convert back to string *****
numStr = ' '.join(str(x).zfill(2) for x in numStr)
#***** Convert numbers into letters *****
alphaStr = numStr.replace("00 ", "a")
alphaStr = numStr.replace("01 ", "b")
alphaStr = numStr.replace("02 ", "c")
alphaStr = numStr.replace("03 ", "d")
alphaStr = numStr.replace("04 ", "e")
.......
是拉姆達neccessary?它有什麼作用? – Cryo
@Cryo no,lambda只是一個愚蠢的匿名函數用於演示目的,以顯示如何應用一個函數對每個數字進行一些計算。 – timgeb
爲了方便起見,我只是在我的代碼中使用此代碼,無論如何,我已經在〜250行代碼中對某些「基本東西」進行了修改 – Cryo