Я прошел один из рецептов python в активном состоянии и нашел следующий код. Я задал следующие 4 вопроса. Будем очень благодарны за любые указания и объяснения.Python Script для шифрования и дешифрования файлов
Q :: Im не может точно понять, почему «ключевое случайное семя» взято у пользователя на первом месте в строке «k = long (sys.argv [2])»? тем более, что это значение «k», похоже, не используется в более поздней части кода?
Во-вторых, в части кода для шифрования и дешифрования, какова точная импликация оператора «bytearray [i] -random.randint (0,255)% 256"? означает ли это, что значения юникода каждого символа сдвигаются или смещаются во время шифрования и после дешифровки снова возвращаются к исходному значению?
В-третьих, «bytearray = map (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
Спасибо, eumiro! что решает большинство моих сомнений. Я все еще не понял, что делает «bytearr = map (ord, f1.read())» на самом деле? – Nura
Спасибо @ DSM! Еще одна маленькая вещь .. Когда я открываю дешифрованный файл с помощью pico, почему это я вижу странные символы? разве это не просто случайные алфавиты и цифры? – Nura