O funcție hash sigură din punct de vedere criptografic poate gestiona orice secvență arbitrară de octeți, indiferent de ce sunt acești octeți sau de ce model ar putea avea, eventual până la o dimensiune maximă specificată (care, pentru SHA-256, este $ 2^{64} $ biți).
Este adevărat că SHA-256 folosește un singur bit urmat de zero biți ca parte a umpluturii sale (schema Merkle-DÃ¥mgard). Cu toate acestea, acel model poate apărea în fluxul de intrare fără probleme și, deoarece ultimul bloc conține lungimea de intrare, putem distinge între acel model din intrare și acel model ca parte a schemei de umplutură. Deci, nu există un model specific în bandă care să facă ca hash-ul să se termine brusc.
Rețineți că alți algoritmi hash, cum ar fi SHA-3 și BLAKE2, folosesc scheme diferite de umplutură și, de asemenea, pot gestiona modele de intrare arbitrare fără probleme. Aceste scheme de umplutură, deși diferite de construcția Merkle-DÃ¥mgard, se consideră, de asemenea, sigure și pot fi de fapt de preferat din alte motive.
În mod obișnuit, când scriem un API în octeți hash, ajungem la trei funcții: o funcție de inițializare, care setează algoritmul cu parametrii corespunzători; o funcție de actualizare, care preia intrarea în hash; și o funcție de finalizare, care efectuează padding, termină hashingul și returnează rezultatul hash. Ca atare, indicăm întotdeauna în mod explicit că hashingul se va termina fără a ține cont de datele de intrare.