Уведомления

Группа в Telegram: @pythonsu

#1 Март 3, 2018 11:32:06

2710280019
Зарегистрирован: 2018-03-03
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

при выполнении кода появляется ошибка input strings must be a multiple of 16 in length

Добрый день! подскажите как решить проблему появления вот такой ошибки
input strings must be a multiple of 16 in length
код следующий
import sys
from Crypto.Cipher import AES

try:
wafile=sys.argv
except:
print (“Usage: %s <msgstore.db.crypt>”) % __file__
sys.exit(1)

key = “346a23652a46392b4d73257c67317e352e3372482177652c”.decode('hex')
cipher = AES.new(key,1)
open ('msgstore.db',“wb”).write(cipher.decrypt(open(wafile,“rb”).read()))

Офлайн

#2 Март 3, 2018 12:48:15

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9895
Репутация: +  855  -
Профиль   Отправить e-mail  

при выполнении кода появляется ошибка input strings must be a multiple of 16 in length

У тебя старая версия pycrypto. В новой версии может быть 24-байтный (192-битный) ключ.



Отредактировано py.user.next (Март 3, 2018 12:48:26)

Офлайн

#3 Март 3, 2018 16:07:02

2710280019
Зарегистрирован: 2018-03-03
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

при выполнении кода появляется ошибка input strings must be a multiple of 16 in length

py.user.next
У тебя старая версия pycrypto. В новой версии может быть 24-байтный (192-битный) ключ.
спасибо за подсказку! номером версии не поделитесь которую искать? заранее спасибо

Офлайн

#4 Март 4, 2018 00:38:26

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9895
Репутация: +  855  -
Профиль   Отправить e-mail  

при выполнении кода появляется ошибка input strings must be a multiple of 16 in length

Я перепутал здесь. Тут дело не в ключе, а в тексте (про ключ сообщение другое обычно). Насчёт версии pycrypto всё, что я сказал, отменяется. Версию оставь.

У тебя строка текста для раскодирования не выравнивается по длине в 16 байт. То есть расшифровывать надо по блокам, кратным длине 16 байт. Обычно надо файл читать блоками по 1024 байта (ну это примерно, можно и по 2048). Если у тебя файл шифровался таким же образом, то его длина должна быть кратной 16. Если же он шифровался таким же образом и его длина не кратна 16, то, возможно, файл повреждён и куда-то что-то пропало или, наоборот, откуда-то что-то добавилось.

А грузить всё содержимое файла в память, как у тебя это делается, это неправильно, так как памяти может не хватить. Нужно и читать блоками, и писать блоками. Тогда файлы любой длины можно обработать, даже если оперативной памяти немного.



Отредактировано py.user.next (Март 4, 2018 00:39:31)

Офлайн

#5 Март 4, 2018 10:22:01

2710280019
Зарегистрирован: 2018-03-03
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

при выполнении кода появляется ошибка input strings must be a multiple of 16 in length

спасибо! буду в этом напрвлении копать

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version