doza_and
Дек. 4, 2011 08:07:19
Ок у вас трешка? Может быть, сделайте “wt”. На 2.x этот фокус проходит, хотя это конечно несколько нелогично.
br3d
Дек. 4, 2011 08:18:13
doza_and
Ок у вас трешка? Может быть, сделайте “wt”. На 2.x этот фокус проходит, хотя это конечно несколько нелогично.
да, третий питон. при изменении на wt запустилось, но эффекта нет(
думаю не может ли быть этого из-за того, что при дешифрации я преобразую полученные числа в символы(для того что бы их можно было записать в строку)…
doza_and
Дек. 4, 2011 08:31:50
тут логика простая не надо ничего зашифровывать расшифровывать
при считывании из файлов указываете кодировку
x="ывафавфа"
with open("output.txt","rt",encoding="utf-8") as f:
s=f.read(x)
внутри программы у вас всегда все в unicode те 2 байта.
А при записи тоже указываете нужную кодировку (чтобы в файле был 1 или 2 байта по вашему желанию)
br3d
просто задача шифровать любой файл
расшифровать???
Вот эта задача ПРИНЦИПИАЛЬНО неразрешима. Поскольку по содержимому файла нельзя однозначно сказать в какой он кодировке.
br3d
Дек. 4, 2011 09:13:14
doza_and
тут логика простая не надо ничего зашифровывать расшифровывать
при считывании из файлов указываете кодировку
x="ывафавфа"
with open("output.txt","rt",encoding="utf-8") as f:
s=f.read(x)
внутри программы у вас всегда все в unicode те 2 байта.
А при записи тоже указываете нужную кодировку (чтобы в файле был 1 или 2 байта по вашему желанию)br3d
просто задача шифровать любой файл
расшифровать???
Вот эта задача ПРИНЦИПИАЛЬНО неразрешима. Поскольку по содержимому файла нельзя однозначно сказать в какой он кодировке.
тоесть в таком случая питон не по подходит ? я правильно понял ???
br3d
Дек. 4, 2011 09:25:08
если так, то очень грустно.., так как у меня две лабы выполненные на нем, и в обоих уперся в эту проблемму …, придется переписывать на плюсах(((
doza_and
Дек. 4, 2011 11:04:15
Вы не поняли - это невозможно вообще. Ни в каком языке. В общем случае в файле вообще нет информации о кодировке. Поэтому на плюсах нет никакого смысла переписывать.
Простой пример:
у вас есть 4 байта
Что это float или int или строка или два символа utf? Оно может быть чем угодно - эта информация находится не в этих байтах а в контексте где они используются.
br3d
Дек. 4, 2011 11:21:01
да, действительно странно…, хотя я уверен, что решение есть …, ладно, будем думать …, на плюсах или питоне, но я задачу решу) …,
по сути тут какой алгоритм шифрования не бери(ну кроме тех, что работают с битами) столкнешься с этой проблемой…,
потому как задание именно ШИРОВАТЬ ЛЮБОЙ ФАЙЛ .., будь то бинарник или видео ролик ..,, прчем что бы после расшифрования не утратился функционал …,
br3d
Дек. 4, 2011 11:22:22
вообще я еще думал на счет struct pack\unpack но что то так и не придумал как можно это использовать в моем случае(
doza_and
Дек. 4, 2011 11:35:46
Ааа понял всетаки шифровать.
def encodefile(nm1,nm2):
with open(nm1,"rb") as f:
data=f.read()
dataencoded=enc(data)
with open(nm2,"wb") as f:
f.write(dataencoded)
def decodefile(nm1,nm2):
with open(nm1,"rb") as f:
data=f.read()
datadecoded=dec(data)
with open(nm2,"wb") as f:
f.write(datadecoded)
вам просто надо подходить к данным как к потоку байтов
br3d
Дек. 4, 2011 15:05:17
doza_and
Ааа понял всетаки шифровать.
def encodefile(nm1,nm2):
with open(nm1,"rb") as f:
data=f.read()
dataencoded=enc(data)
with open(nm2,"wb") as f:
f.write(dataencoded)
def decodefile(nm1,nm2):
with open(nm1,"rb") as f:
data=f.read()
datadecoded=dec(data)
with open(nm2,"wb") as f:
f.write(datadecoded)
вам просто надо подходить к данным как к потоку байтов
да я все это делал, проблема в другом, так как алгоритм дешифрует побайтово, мне надо эти байты объединять в какой то контейнет…, что собственно я и не могу понять как сделать, какого типа должен быть этот контейнер что бы сохраненные в нем байты остались байтами????