myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Webmaster Talk > Entwicklung & Programmierung
Seite neu laden

Passwortverschlüsselungsmethode in MSSQL Datenbank herausfinden

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 05.06.14, 17:51   #1
logan517
Ausfänger
 
Benutzerbild von logan517
 
Registriert seit: Jun 2010
Beiträge: 281
Bedankt: 54
logan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punkte
Standard Passwortverschlüsselungsmethode in MSSQL Datenbank herausfinden

Hallo,

ich habe 1 ein Programm, welches im Hintergrund eine MSSQL Datenbank hat.
Dort werden unter andern die Benutzer/Anmeldeinformationen gespeichert.

Wichtig dabei ist für mich der Benutzername und das Passwort.
Ich möchte gerne davon regelmäßig ein Export in eine MySql Datenbank machen, damit sich die Benutzer mit den selben Daten auf einer Webseite einloggen können.

Das Problem dabei ist, ich bekomme nicht raus, wie das Passwort verschlüsselt wird.
Das Passwort der User ist mir dabei vollkommen egal, also es geht nicht darum dieses zu knacken.
Lediglich möchte ich auf der Webseite (mit PHP z.B.) das eingegeben Passwort verschlüsseln und dann mit dem in der Datenbank vergleichen.
Ich habe schon diverse Verschlüsselungsmethoden versucht, doch nichts hat übereingestimmt.

Hier mal ein Beispielpasswort verschlüsselt:
123456 =
DBFACB1C35622BE6D10F1EC9982A961A

Das Interessante dabei ist, jedes Passwort ist immer 32 Stellen lang.
Und auf einem anderen PC / Programm sieht 123456 z.B. so aus:
C15EB23C680E8098EF064FCA1CF8A80B

Versucht habe ich die gängigsten Verschlüsselungsmethoden
MD2, MD4, MD5, SHA, SHA1, SHA2_256 und SHA2_512

Habt ihr noch ne Lösung bzw. en anderen Vorschlag?
Gruß
Logan517
logan517 ist offline   Mit Zitat antworten
Ungelesen 05.06.14, 19:31   #2
Wraither
Anfänger
 
Registriert seit: Aug 2009
Beiträge: 17
Bedankt: 3
Wraither ist noch neu hier! | 0 Respekt Punkte
Standard

Hallo,
es konnte z. B. mit md5-hash erstellt sein, dabei wird aber noch ein Salt hinzugefügt deswegen weichen die Hashwerte von einander ab.

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]

Heißt entweder arbeites bei deinen eigenen Programmen auch mit einen Salt oder du ersetzt das Salt im Mssql Programm mit NULL
Wraither ist offline   Mit Zitat antworten
Ungelesen 05.06.14, 23:44   #3
saibot521_2
Anfänger
 
Registriert seit: Feb 2012
Beiträge: 35
Bedankt: 18
saibot521_2 ist noch neu hier! | 0 Respekt Punkte
Standard

Ich schließe mich meinem Vorredner an. Um die Sicherheit der Kennwörter bei einem Diebstahl von Zugangsdaten in die DB zu erhöhen verwendet man oft "gesalzene Hash-Werte"

Die einfachste Form ist das Kennwort mit der User-ID zu "salzen".

Eine bessere (und vermutlich auch viel öfter verwendete) Variante ist, wenn man beim anlegen des Nutzers in einer anderen Spalte eine Art "Buchstaben-Sonderzeich-Zahlen Salat" mit z.B. 5 Zeichen Länge anlegt und das denn als Salz verwendet. Wirf doch mal einen Blick in die Tabelle wo die Kennwörter gespeichert werden - ist da vielleicht eine Spalte dabei wo bei jedem ein anderer "Zeichensalat" drin steht?
saibot521_2 ist offline   Mit Zitat antworten
Ungelesen 06.06.14, 19:50   #4
logan517
Ausfänger
 
Benutzerbild von logan517
 
Registriert seit: Jun 2010
Beiträge: 281
Bedankt: 54
logan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punkte
Standard

Zitat:
Zitat von Wraither Beitrag anzeigen
[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
Vielen Dank, wusste ich noch garnicht.


Zitat:
Zitat von saibot521_2 Beitrag anzeigen
Die einfachste Form ist das Kennwort mit der User-ID zu "salzen".
Das ist auch die Lösung bzw. der richtige Weg, allerdings noch nicht ganz

mit dem Programm .NET Reflector konnte ich die richtige Klasse finden, welche für die Verschlüsselung zuständig ist.

Code:
public string HashPassword(string UserID, string Passwort)
{
    UnicodeEncoding encoding = new UnicodeEncoding();
    MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
    byte[] bytes = encoding.GetBytes(UserID + Passwort);
    return BitConverter.ToString(provider.ComputeHash(bytes)).Replace("-", "");
}
Leider kann ich kein C# und ich kann daraus lediglich lesen, dass die das Passwort an die UserID gehängt wird und dieses dann mit MD5 verschlüsselt wird.
Wenn ich gleiches allerdings in PHP mache, stimmt es nicht überein
Code:
$md5 = md5($userid.$password);
logan517 ist offline   Mit Zitat antworten
Ungelesen 07.06.14, 16:28   #5
logan517
Ausfänger
 
Benutzerbild von logan517
 
Registriert seit: Jun 2010
Beiträge: 281
Bedankt: 54
logan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punkte
Standard

Zitat:
Zitat von KanuKkidz Beitrag anzeigen
Bytes mit Unicode-Encoding.
Ich steh grad aufm Schlauch.


Code:
function HashPassword($UserID, $Password){
	$charstring = $UserID.$Password;
	return md5(base64_encode($charstring));
}


Aber auch das funktioniert nicht:

return md5(utf8_encode($charstring));
logan517 ist offline   Mit Zitat antworten
Ungelesen 07.06.14, 17:18   #6
spartan-b292
Echter Freak
 
Benutzerbild von spartan-b292
 
Registriert seit: Mar 2010
Ort: /home/spartan-b292
Beiträge: 2.866
Bedankt: 1.700
spartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punktespartan-b292 leckt gerne myGully Deckel in der Kanalisation! | 230828 Respekt Punkte
Standard

Du machst immer noch nicht das was der C# code macht.
__________________
"They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety"
spartan-b292 ist offline   Mit Zitat antworten
Ungelesen 08.06.14, 00:14   #7
logan517
Ausfänger
 
Benutzerbild von logan517
 
Registriert seit: Jun 2010
Beiträge: 281
Bedankt: 54
logan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punkte
Standard

Ich war doch schon fast aufm richtigen Weg, lediglich die Umwandlung in UTF 16 hatte ich nicht.

So funktioniert es nun perfekt
Code:
function HashPassword($UserID, $Password){
	$charstring = $UserID.$Password;
	
	for($i=0; $i<strlen($charstring); $i++){	
		$result .= $charstring[$i]."\x00";
	}
	return strtoupper(md5($result));
}
Danke
logan517 ist offline   Mit Zitat antworten
Ungelesen 08.06.14, 17:40   #8
saibot521_2
Anfänger
 
Registriert seit: Feb 2012
Beiträge: 35
Bedankt: 18
saibot521_2 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von logan517 Beitrag anzeigen

Hier mal ein Beispielpasswort verschlüsselt:
123456 =
DBFACB1C35622BE6D10F1EC9982A961A

Das Interessante dabei ist, jedes Passwort ist immer 32 Stellen lang.
Und auf einem anderen PC / Programm sieht 123456 z.B. so aus:
C15EB23C680E8098EF064FCA1CF8A80B
Zitat:
Zitat von logan517 Beitrag anzeigen

Code:
public string HashPassword(string UserID, string Passwort)
{
    UnicodeEncoding encoding = new UnicodeEncoding();
    MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
    byte[] bytes = encoding.GetBytes(UserID + Passwort);
    return BitConverter.ToString(provider.ComputeHash(bytes)).Replace("-", "");
}
Ich hab gestern mal spaßenshalber das durchgespielt ...
bin von ID 1 bis 10Mio gegangen ... aber deine beiden MD5-Hash-Werte kamen da nicht raus
saibot521_2 ist offline   Mit Zitat antworten
Ungelesen 09.06.14, 09:53   #9
logan517
Ausfänger
 
Benutzerbild von logan517
 
Registriert seit: Jun 2010
Beiträge: 281
Bedankt: 54
logan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punktelogan517 leckt gerne myGully Deckel in der Kanalisation! | 505874 Respekt Punkte
Standard

Zitat:
Zitat von saibot521_2 Beitrag anzeigen
von ID 1 bis 10Mio gegangen
Frag mich nicht wieso, aber die BenutzerID ist nicht numerisch.
Diese ist 17 stellig in komplett mit Großbuchstaben und Zahlen gemischt.
Kp nach welchem Prinzip das Programm die anlegt.

Mit meinem Code, den ich zuletzt gepostet habe, funktionierst
logan517 ist offline   Mit Zitat antworten
Ungelesen 10.06.14, 18:04   #10
saibot521_2
Anfänger
 
Registriert seit: Feb 2012
Beiträge: 35
Bedankt: 18
saibot521_2 ist noch neu hier! | 0 Respekt Punkte
Standard

Hehe, ich hab da so eine Vorahnung ... hab vor kurzem ein Tutorial zum Thema NHibernate geschaut ... und da haben sie auch das Thema ID-Generator angesprochen. Mal angenommen der Programmierer hat in seinem Projekt den O/R-Mapper NHibernate verwendet, dann könnte es der "Hilo"-Generator sein. Da wird eine zufällige Buchstaben-Zahlen Kombi als Id erzeugt. Angeblich sollen die weltweit quasi eindeutig sein, so dass man theoretisch z.B. zwei Datenbanken "zusammen schmeißen" könnte. Ist halt nur doof wenn man dann per Hand eine bestimmte Id sucht *fg*
saibot521_2 ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:50 Uhr.


Sitemap

().