我正想通過Python食譜一個處於活動狀態,發現下面的代碼的解密。我提出了以下4個問題。將非常感謝任何指導和解釋。的Python腳本加密和文件
Q ::林無法準確弄清楚,爲什麼是一個「鍵隨機種子」在線從所述用戶在所述第一位置採取「K =長(sys.argv中[2])」?特別是因爲,這個值'k'似乎沒有用在代碼的後面部分?其次,在加密和解密代碼的部分,聲明「bytearray [i] -random.randint(0,255)%256」的確切含義是什麼?這是否意味着每個字符的unicode值在加密期間會移位或移位,並在解密時重新移回原始值?
第三,莫非 「的bytearray =地圖(ORD,f1.read())」 計算文件中的每個字符的Unicode點值?
最後,由於隨機數的加密和解密使用的,什麼因素保證了加密文件的解密將是準確的?種子價值「k」與此有什麼關係?
下面是我學習的代碼。
將非常感謝您的指導,在此先感謝
# encdec.py
import sys
import random
if len(sys.argv) != 5:
print "Usage: encdec.py e/d longintkey [path]filename1 [path]filename2"
sys.exit()
k = long(sys.argv[2]) # key
random.seed(k)
f1 = open(sys.argv[3], "rb")
bytearr = map (ord, f1.read())
f2 = open(sys.argv[4], "wb")
if sys.argv[1] == "e": # encryption
for i in range(len(bytearr)):
byt = (bytearr[i] + random.randint(0, 255)) % 256
f2.write(chr(byt))
if sys.argv[1] == "d": # decryption
for i in range(len(bytearr)):
byt = ((bytearr[i] - random.randint(0, 255)) + 256) % 256
f2.write(chr(byt))
f1.close()
f2.close()
+1速度!我唯一要補充的是,unicode與它無關:文件以二進制模式打開並進行處理。 – DSM 2011-02-07 15:23:28