Нужно зашифровать файл с помощью алгоритма sha256, и предоставить пользователь возможность вводить размер блока который будет хешироваться каждой итерации, просто зашифровать у меня получилось, но вот как задать размер блока для меня остаётся не ясным. Почитал документацию про hashlib, там сказано что hash.block_size - The internal block size of the hash algorithm in bytes. И это является константой и изменять нельзя. Тогда единственным решением будет просто считать все строки с файла и разбивать их на блоки с размером который был задан пользователем. Подскажите, правильно ли я думаю, и какая должна быть проверка? Спасибо
Сергей Горностаев, насколько я понимаю документацию, последовательный вызов .update() приведёт к аккумуляции в памяти всего содержимого файла. То есть это по сути ничем не отличается от единовременного чтения файла целиком. Возможно, я не прав. Есть соображения по этому поводу?
There is one constructor method named for each type of hash. All return a hash object with the same simple interface. For example: use sha256() to create a SHA-256 hash object. You can now feed this object with bytes-like objects (normally bytes) using the update() method. At any point you can ask it for the digest of the concatenation of the data fed to it so far using the digest() or hexdigest() methods.
Andrey Dugin, нет, это не так. Легко провести эксперимент, скормив этому скрипту десятикилобайтный файл и десятигигабайтный, профиль памяти отличаться не будет.