Sprache: C#
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.
[b]Benötigte Namespaces[/b] – 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;
}
//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;
}
Alte URL:
/snippet/md5-validieren/14107
Das geht doch viel einfacher mit Regex.
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.