Die mySQL Versionen vor V4.1 nutzen einen veralteten MD5 Hash-Algorithmus. Dieser lieferte nur einen max. 16 stelligen Hashwert und ist weiterhin unsicher und teilweise decodierbar. Zwar gilt für MD5 aufgrund seines Algorithmusses grundsätzlich, dass diese Hashwerte nicht "decodiert" werden können - für den alten MD5/16 Code gilt dies' jedoch nicht eingeschränkt. Aufgrund des häufigen Anfragen für eine einfache Berechnung dieses MD5/16 Hash haben wir Ihnen den C# Sourcecode zur Verfügung gestellt. Diese liefert Ihnen für ein Passwort (= Parameter) den MD5/16 Hash:
Aktueller Hinweis vom 03.06.2017:
Es ist zum Kotzen, dass man hier seine eigene Arbeit präsentiert und diese dann rotzfrech z.Bsp. zu Stackoverflow kopiert wird. Urheberrecht (Copyright) scheint für viele ein Fremdwort zu sein.
An alle Kopierer: Wundert ihr Euch wirklich, dass gute Entwickler mehr und mehr ihren Source Code verschlüsseln und immer weniger helfen !?
Anstall Stackoverflow meine Arbeit schützt, werde ich aufgefordert (Quelle: http://stackexchange.com/legal/terms-of-service#ReportingCopyrightInfringements), noch weitere Datenschutzrelevante Daten zu präsentieren. Geht's dann noch !?
Wenn meine Ausdruckweise den einen oder anderen stört, dann ist das schade - würden sich mehr Nutzer für den Schutz des geistigen Eigentums stark machen, dann müsste ich mich nicht so häufig ärgern. Die Folge ist, dass ich irgendwann solche Seiten mit kostenfreier Hilfe und Tips einfach schließe, denn auf Ärger "für nothing" habe ich einfach keine Lust.
namespace ConsoleApplication { class Program { static string mysql_old_password(string sPassword) { UInt32[] result = new UInt32[2]; bool bDebug = false; UInt32 nr = (UInt32)1345345333, add = (UInt32)7, nr2 = (UInt32)0x12345671; UInt32 tmp; char [] password = sPassword.ToCharArray(); int i; for (i = 0; i < sPassword.Length; i++) { if (password[i] == ' ' || password[i] == '\t') continue; tmp = (UInt32)password[i]; nr ^= (((nr & 63) + add) * tmp) + (nr << 8); nr2 += (nr2 << 8 ) ^ nr; add += tmp; } result[0] = nr & (((UInt32)1 << 31) - (UInt32)1); UInt32 val = (((UInt32)1 << 31) - (UInt32)1); result[1] = nr2 & val; string hash = String.Format("{0:X}{1:X}", result[0], result[1]); return hash.ToLower(); } static void Main(string[] args) { string hash = mysql_old_password("Hier Ihr Passwort"); Console.WriteLine(hash); } } }
Das häufige Problem sind alte mySQL Datenbanken, die Identifikationen enthalten und heute nicht mehr einfach ohne mySQL geprüft werden können. Den alten MD5/16 Hash erhalten Sie auch weiterhin innerhalb von mySQL durch den Befehl "OLD_PASSWORD()". Dieser Quellcode soll Ihnen nur dann helfen, wenn Sie alte Daten (z.Bsp. aus Sicherungen) prüfen müssen.