Криптографически безопасная хэш-функция может обрабатывать любую произвольную последовательность байтов, независимо от того, что это за байты или какой шаблон они могут иметь, возможно, вплоть до указанного максимального размера (что для SHA-256 равно $ 2^{64} $ биты).
Это правда, что SHA-256 использует один единичный бит, за которым следуют нулевые биты, как часть заполнения (схема Меркла-Дамгарда). Однако этот шаблон может появиться во входном потоке без проблем, а поскольку последний блок содержит входную длину, мы можем различать этот шаблон во входных данных и этот шаблон как часть схемы заполнения. Таким образом, не существует какого-либо определенного внутриполосного шаблона, который приведет к резкому завершению хэша.
Обратите внимание, что другие хэш-алгоритмы, такие как SHA-3 и BLAKE2, используют другие схемы заполнения, и они также могут без проблем обрабатывать произвольные входные шаблоны. Эти схемы заполнения, хотя и отличаются от конструкции Меркла-Дамгарда, также считаются безопасными и могут быть предпочтительнее по другим причинам.
Обычно, когда мы пишем API для хэширования, мы получаем три функции: функцию инициализации, которая устанавливает алгоритм с соответствующими параметрами; функция обновления, которая принимает входные данные для хэша; и функция завершения, которая выполняет заполнение, завершает хеширование и возвращает результат хеширования. Таким образом, мы всегда явно указываем, что хеширование должно закончиться независимо от входных данных.