csharp / expert
Snippet
Identitätsprüfung in konstanter Zeit
Ein sicherheitskritisches Muster zum Vergleich sensibler Daten wie Hashes. Durch die Verwendung von XOR und das Vermeiden von vorzeitigen Rückgaben bleibt die Ausführungszeit konstant, unabhängig davon, wo eine Abweichung auftritt.
snippet.cs
csharp
1
2
3
4
5
6
7
8
9
10
public static bool SecureCompare(byte[] a, byte[] b){if (a.Length != b.Length) return false;int result = 0;for (int i = 0; i < a.Length; i++){result |= a[i] ^ b[i];}return result == 0;}
Erklärung
1
result |= a[i] ^ b[i];
Akkumuliert Differenzen mittels bitweisem XOR ohne Verzweigungslogik.
2
return result == 0;
Gibt nur dann true zurück, wenn jedes einzelne Byte identisch war.