Как мне эффективно прочитать закодированный файл с учетом алгоритма и ключа в Python?Python

Программы на Python
Ответить
Anonymous
 Как мне эффективно прочитать закодированный файл с учетом алгоритма и ключа в Python?

Сообщение Anonymous »

Следующий код — это то, что нужно написать:
Закодировать документ с помощью шифра Виженера
Декодировать документ и распечатать его на консоли
Разрешить редактирование документа
Re - закодировать документ.
Он использует второй временный файл для хранения декодированных данных. Данные закодированы с помощью шифра Виженера, ключ для которого записан в формате vg:key в файлеkeys.txt

Код: Выделить всё

keys = open("keys.txt")
for i in keys:
if "vg:" in i:
vgKey = i.lstrip("vg: ")
vgKey = vgKey.strip()
keys.close()

def encrypt(phrase,key=vgKey):
alphabet = list("abcdefghijklmnopqrstuvwxyz")
cypher = []
phrase = phrase.lower()
keyCount = 0
for i in phrase:
if i in alphabet:
alphPos = alphabet.index(i)
if keyCount > len(key)-1:
keyCount -= len(key)
alphPos += alphabet.index(key[keyCount])
if alphPos > 25:
alphPos -= 26
cypher.append(alphabet[alphPos])
keyCount += 1
else:
cypher.append(i)
return "".join(cypher)

def decrypt(cypher,key=vgKey):
alphabet = list("abcdefghijklmnopqrstuvwxyz")
phrase = []
cypher = cypher.lower()
keyCount = 0
for i in cypher:
if i in alphabet:
alphPos = alphabet.index(i)
if keyCount > len(key)-1:
keyCount -= len(key)
alphPos -= alphabet.index(key[keyCount])
if alphPos < 0:
alphPos += 26
phrase.append(alphabet[alphPos])
keyCount += 1
else:
phrase.append(i)
return "".join(phrase)

db = open("DBI.csv","w")
dbEncrypted = open("DBIEncrypted.csv")
for i in dbEncrypted:
db.write(decrypt(i))
db.close()
dbEncrypted.close()
db = open("DBI.csv")
dbCont = db.readlines()
print("".join(dbCont))
row = input("Which row would you like to edit? Type n for a new row.\n")
if row != "":
text = input("What would you like the new value to be?\n")
if row != "n":
dbCont[int(row)] = text+"\n"
elif row == "n":
dbCont[len(dbCont)-1] += "\n"
dbCont.append(text)
db.close()
dbEncrypted = open("DBIEncrypted.csv","w")
for i in dbCont:
dbEncrypted.write(encrypt(i))
dbEncrypted.close()
Есть ли лучшие способы сделать это? если да, то как?


Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»