Найти - Пользователи
Полная версия: при выполнении кода появляется ошибка input strings must be a multiple of 16 in length
Начало » Центр помощи » при выполнении кода появляется ошибка input strings must be a multiple of 16 in length
1
2710280019
Добрый день! подскажите как решить проблему появления вот такой ошибки
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()))
py.user.next
У тебя старая версия pycrypto. В новой версии может быть 24-байтный (192-битный) ключ.
2710280019
py.user.next
У тебя старая версия pycrypto. В новой версии может быть 24-байтный (192-битный) ключ.
спасибо за подсказку! номером версии не поделитесь которую искать? заранее спасибо
py.user.next
Я перепутал здесь. Тут дело не в ключе, а в тексте (про ключ сообщение другое обычно). Насчёт версии pycrypto всё, что я сказал, отменяется. Версию оставь.

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

А грузить всё содержимое файла в память, как у тебя это делается, это неправильно, так как памяти может не хватить. Нужно и читать блоками, и писать блоками. Тогда файлы любой длины можно обработать, даже если оперативной памяти немного.
2710280019
спасибо! буду в этом напрвлении копать
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB