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
GFU-Schulungen  [Anzeige]

C# Grundlagen

Die Schulung vermittelt Ihnen die Grundlagen von C# in der Arbeit mit Datentypen sowie bei Klassenbibliotheken. Sie lernen, mit Variablen umzugehen und deren verschiedene Formen zu konvertieren. 

C# Aufbaukurs

Sie haben grundlegende .NET- und C#-Kenntnisse und und wollen diese nun erweitern. Der Aufbaukurs C# führt Sie ein die Arbeit mit Interfaces und Delegates, Generics und Parallel Computing.

//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!