Feedback

C# - MD5 validieren

Veröffentlicht von am 02.01.2016
(0 Bewertungen)
MD5 Validatoren gibt es hier schon, ich möchte aber trotzdem zusätzlich meinen veröffentlichen, da dieser hier nicht auf Regex aufbaut und damit schneller ist.

Ich zeige hier 2 Versionen der Methode, einmal mit C# 6 und LINQ und eine klassische Variante die nur eine foreach-Schleife einsetzt.

Benötigte Namespaces - für die C# 6 Version
System.Linq
//C# 6 Syntax mit LINQ

/// <summary>
/// Validiert einen MD5 Hash-String.
/// </summary>
/// <param name="md5">Die zu testende Zeichenfolge.</param>
/// <returns><c>true</c>, wenn <paramref name="md5"/> ein gültige MD5 Hash ist; andernfalls <c>false</c>.</returns>
static bool IsValidMD5(string md5) => md5 != null && md5.Length == 32 && md5.All(x => (x >= '0' && x <= '9') || (x >= 'a' && x <= 'f') || (x >= 'A' && x <= 'F'));

//alte C# Syntax

/// <summary>
/// Validiert einen MD5 Hash-String.
/// </summary>
/// <param name="md5">Die zu testende Zeichenfolge.</param>
/// <returns><c>true</c>, wenn <paramref name="md5"/> ein gültige MD5 Hash ist; andernfalls <c>false</c>.</returns>
static bool IsValidMD5(string md5)
{
    if (md5 == null || md5.Length != 32) return false;
    foreach (var x in md5)
    {
        if ((x < '0' || x > '9') && (x < 'a' || x > 'f') && (x < 'A' || x > 'F'))
        {
            return false;
        }
    }
    return true;
}
Abgelegt unter MD5, Validate, LINQ, Validator.

2 Kommentare zum Snippet

lucifeey schrieb am 04.12.2016:
Das geht doch viel einfacher mit Regex.
Koopakiller schrieb am 04.12.2016:
Regex ist einfach nur langsam und kann man in vielen Fällen problemlos mit so kurzen Codes ersetzen.
Ich weiß nicht wie es anderen geht, aber zumindest ich brauchte eben keine 5 Sekunden dafür, um zu erfassen wie der Code funktioniert. Das hätte das Regex Pattern ^[0-9A-Fa-f]{32}$ wohl auch abverlangt.

Regex hat seine Daseinsberechtigung, in meinen Augen aber nicht für solche einfachen Aufgaben.
 

Logge dich ein, um hier zu kommentieren!