[C#] md5 vs PHP md5

Pagina: 1
Acties:
  • 219 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 28-05-2024
Hey,

ik wil in een C programma een login inbouwen, die in een mysql database in een tabel kijkt waar het wachtwoord middels PHP en de md5 functie van PHP is opgeslagen.

Ik krijg alleen niet de goeie waarden terug in C# als ik een hash maak van het ingevulde wachtwoord.

code:
1
2
3
byte[] data1ToHash = ConvertStringToByteArray(strPassword);
byte[] hashvalue1 = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(data1ToHash);
MessageBox.Show("Hash: " + BitConverter.ToString(hashvalue1));


Bovenstaande code geeft als hash van het woord 'test' het volgende terug:
Hash: C8-05-9E-2E-C7-41-9F-59-0E-79-D7-F1-B7-74-BF-E6
Met de PHP md5 functie wordt de hash van het woord 'test' het volgende:
098f6bcd4621d373cade4e832627b4f6
Hoe krijg ik het nu voor elkaar? Werken C# en PHP soms met een verschillende md5 methode (lijkt me vreemd?), of ...?

[ Voor 4% gewijzigd door TangLeFuzZ op 24-01-2005 19:27 ]


Acties:
  • 0 Henk 'm!

  • Kuhlie
  • Registratie: December 2002
  • Niet online
Er is maar 1 md5, en dat is md5 ;-)

Controlleer die data1ToHash eens nadat je hem hebt gemaakt. Gewoon doorheenlopen en de waarden printen, datzelfde in php doen en kijken of dat rijtje getallen hetzelfde is...

Acties:
  • 0 Henk 'm!

  • NeOTheMaTriXM
  • Registratie: April 2001
  • Laatst online: 17-09 15:07
C#:
1
2
3
4
5
6
7
8
9
byte[] buffer = System.Text.ASCIIEncoding.Default.GetBytes(value);
mySha.ComputeHash(buffer);
Hash = mySha.Hash;

String HashText = "";
foreach (byte b in Hash)
{
    HashText += Convert.ToString(b, 16).ToUpper().PadLeft(2, '0');
}


Dit werkte voormij, laaste gedeelte verandert het naar 16 (hexa) decimaal
value: is een String

Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
2
3
            byte[] data1ToHash = System.Text.Encoding.ASCII.GetBytes("test");
            byte[] hashvalue1 = ((HashAlgorithm)CryptoConfig.CreateFromName("MD5")).ComputeHash(data1ToHash);
            MessageBox.Show("Hash: " + BitConverter.ToString(hashvalue1));



Hash: 09-8F-6B-CD-46-21-D3-73-CA-DE-4E-83-26-27-B4-F6

Acties:
  • 0 Henk 'm!

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 28-05-2024
Thanks... met System.Text.ASCIIEncoding.Default.GetBytes werkt het, had die andere methode uit de Visual Studio Help...

Trouwens, nu zitten er dus wel streepjes (-) tussen, kan iemand misschien uitleggen waarom dat is?

(ben vrij nieuw met c# en win32 programmeren in het algemeen... :))

Acties:
  • 0 Henk 'm!

  • NeOTheMaTriXM
  • Registratie: April 2001
  • Laatst online: 17-09 15:07
TangLeFuzZ schreef op maandag 24 januari 2005 @ 19:39:
Thanks... met System.Text.ASCIIEncoding.Default.GetBytes werkt het, had die andere methode uit de Visual Studio Help...

Trouwens, nu zitten er dus wel streepjes (-) tussen, kan iemand misschien uitleggen waarom dat is?

(ben vrij nieuw met c# en win32 programmeren in het algemeen... :))
Komt door bitconverter... 'mijn' methode is dus zonder streepje.

Acties:
  • 0 Henk 'm!

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 28-05-2024
Allrighty, thanks :)

Heb nog een andere vraag waar ik op dit moment ff niet uit kom met behulp van de search in visual studio,

ik heb een listview, met daarin een aantal kolommen (titel, auteur, en url).

Nu wil ik dat wanneer je op een rij klikt, hij naar die url gaat.
Naar die url kan met 'System.Diagnostics.Process.Start(url), maar ik weet niet hoe je nou de precieze kolom te pakken krijgt wanneer je zo'n item aanklikt... hoe kan ik dit het beste doen?

Acties:
  • 0 Henk 'm!

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Zo'n row item heeft een property waarin de subitems zitten. ;)

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 00:27

.oisyn

Moderator Devschuur®

Demotivational Speaker

TangLeFuzZ schreef op maandag 24 januari 2005 @ 19:39:
Trouwens, nu zitten er dus wel streepjes (-) tussen, kan iemand misschien uitleggen waarom dat is? (ben vrij nieuw met c# en win32 programmeren in het algemeen... :))
Leesbaarheid, net zoals dat je überhaupt een string met hexadecimale digits terug krijgt. MD5 is een algoritme dat werkt op binaire data, met een 128 bits binair resultaat. PHP zet dat automatisch voor je om naar een string met hexadecimale digits. BitConverter.ToString doet min of meer hetzelfde, maar de essentie van MD5 blijft binair, en dat is dan ook wat je het beste met elkaar kunt vergelijken.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1