« Internet: Keine Überwachung von Familienmitgliedern notwendig | Startseite | WordPress: Thinkbox in Version 2.8 »
mySQL: Alten MD5 Hash in C# berechnen (16 stellig)
admin | 25.06.2009
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:
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.
Kategorie: Anleitungen, C# .Net, MySQL, Sicherheit | Keine Kommentare »