SHA-256 (Secure Hash Algorithm 256-Bit) ist eine kryptographische Hash-Funktion, die einen festen 256-Bit (32-Byte) Hash-Wert aus einer Eingabedaten beliebiger Größe erzeugt. Hier ist eine vereinfachte Erklärung, wie es funktioniert:
1. Eingabeanpassung: Die Eingabemeldung wird aufgepolstert, um sicherzustellen, dass ihre Länge ein Vielfaches von 512 Bit (64 Byte) ist, wie es der Algorithmus erfordert.
2. Initialisierung: SHA-256 initialisiert acht 32-Bit-Variablen (bekannt als Hash-Werte) auf spezifische Konstanten. Diese Hash-Werte werden verwendet, um die Kompressionsfunktion zur Verarbeitung von Blöcken der Eingabemeldung zu initialisieren.
3. Verarbeitung von Blöcken: Die aufgepolsterte Nachricht wird in 512-Bit-Blöcke unterteilt. Jeder Block durchläuft eine Reihe von Transformationen mit Hilfe einer Kompressionsfunktion, die auf einen Puffer fester Größe (512 Bit) arbeitet und die Hash-Werte aktualisiert.
4. Kompressionsfunktion: Für jeden Block mischt die Kompressionsfunktion die aktuellen Hash-Werte mit den Blockdaten in mehreren Runden der Verarbeitung. Dies umfasst bitweise Operationen (wie AND, OR, XOR), Addition modulo 2^32 und zyklische Verschiebungen.
5. Endgültiger Hash-Wert:Nach der Verarbeitung aller Blöcke wird der endgültige Hash-Wert aus den Hash-Werten abgeleitet, die während des gesamten Prozesses kontinuierlich aktualisiert wurden. Dieser endgültige Hash-Wert ist eine 256-Bit-Ausgabe, die die ursprüngliche Eingabemeldung eindeutig darstellt.
SHA-256 ist darauf ausgelegt, rechnerisch effizient zu sein und gleichzeitig ein hohes Maß an Sicherheit gegen Kollisionen (bei denen zwei verschiedene Eingaben denselben Hash-Wert erzeugen) und Pre-Image-Angriffe (das Finden einer Eingabe, die zu einem bestimmten Ausgang hashet) zu bieten. Es wird weit verbreitet in digitalen Signaturen, Nachrichtenauthentifizierungscodes (MACs) und verschiedenen Sicherheitsprotokollen verwendet.