Toon posts:

[asp.net] MD5 hash vraagje

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een stuk code geschreven dat een password automatisch genereerd en MD5 encrypt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
'Genereer password
function generate_password()
    dim password as String
    
    Dim rRandom As New Random(System.DateTime.Now.Millisecond)
    dim iRandom as Integer
    
    dim i, length as Integer

    while length < 6
        iRandom = rRandom.Next( Asc("0"), Asc("z") )
        
        If (((iRandom > = Asc("0") ) And (iRandom <= Asc("9")) 
or (iRandom > = Asc("A") ) And (iRandom < = Asc("Z") ) 
or (iRandom > = Asc("a") ) And (iRandom < = Asc("z") )) ) Then 
            password = password & Chr(iRandom) 
            length += 1
        End If
    end while
    
    'Gooi MD5 encrypty over password
    Dim md5Hasher as New MD5CryptoServiceProvider()
    Dim hashedDataBytes as Byte()   
    Dim encoder as New UTF8Encoding()

    hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes( password ))
    password = System.Text.Encoding.ASCII.GetString(hashedDataBytes)

    return password
end function


Deze code werkt prima, alleen levert de hashedDataBytes een byte array op die ik verder niet kan gebruiken in een string oid.
Ik heb ergens een stukje code gevonden om een byte array om te zetten naar een string:
password = System.Text.Encoding.ASCII.GetString(hashedDataBytes)

nu is password na het omzetten van de byte array: +es.7&w,*-'_i ipv 0x8312345459...

Dit komt vast omdat ik er een ascii string van maak, mijn vraag is nu of dit kwaad kan?
Blijft de md5 encrypty op deze manier in tact en kan ik op dezelfde manier een password van een gebruiker valideren? (dus het ingevoerde password md5 hashen en naar een ascii string converteren, met 100% slagingspercentage :))

Of bestaat er een manier waarop ik die 0x831237987 direct in een string kan krijgen?

[ Voor 5% gewijzigd door Verwijderd op 19-03-2003 12:36 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Het lijkt me handig om het in pure printable characters te zetten... je kunt eens kijken naar base64 encoding of gewoon een hex-functie maken die een getal omzet naar een hexadecimale string-representatie van het getal (er zal vast wel zo'n functie bestaan, maar hij is in principe ook makkelijk zelf te maken)

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.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Eigenlijk kan het geen kwaad lijkt me.

Als je een ingegeven passwoord op dezelfde manier encryped, en omzet naar een string, dan zal die string hetzelfde zijn als het opgeslagen encrypted passwoord.

https://fgheysels.github.io/


Verwijderd

Topicstarter
volgens mij is die base64 encrypty wel erg simpel te kraken?
je kan hem gewoon decrypten????

Het moet natuurlijk wel een beetje veilig zijn!!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

base64 encoding is geen encryptie, maar een manier om binary data te representeren in printable characters

je moet je gehashte wachtwoord (en een hash is ook geen encryptie!!) gewoon door een base64 encoder halen, en dan krijg je een string terug die alleen uit printable chars bestaat. Als je die weer decode krijg je je binary data terug

op dezelfde manier worden files geencode als je ze als attachment mailt, omdat SMTP een text-based protocol is, en je dus geen binaire data kunt versturen

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.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02

Dus, praktisch komt het er waarschijnlijk op neer dat de TS
[code]
System.Text.Encoding.ASCII.GetString (blaat);
[/code]
gewoon moet vervangen door
[code]
System.Text.Encoding.Base64.GetString(blaat);[/code]

ofzo?


Encoding.Base64 bestaat niet.

[ Voor 9% gewijzigd door whoami op 19-03-2003 13:04 ]

https://fgheysels.github.io/


  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 22-08 13:56
Hier is nog geen standaard functie voor geloof ik...

Je kan het op deze manier doen
code:
1
2
3
4
5
6
7
8
9
10
public static string GetAsHexaDecimal(byte[] bytes) 
{
 StringBuilder s = new StringBuilder();
 int length = bytes.Length;
 for (int n=0; n < length; n++) 
 {
  s.Append(String.Format("{0,2:x}", bytes[n]).Replace(" ", "0"));
 }
 return s.ToString();
}


uitvoer = a9993e364706816aba3e25717850c26c9cd0d89d


Veel succes!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

beetje inefficient om die replace continu op de huidige stringbuilder te doen. Kun je beter op het eind doen of op elke string die je toevoegd
verkeerd gelezen |:(

[ Voor 9% gewijzigd door .oisyn op 19-03-2003 13:18 ]

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.


Verwijderd

Topicstarter
saweet!! thnx PhoneTech!! het werkt :)

In VB (zonder klasse):
code:
1
2
3
4
5
6
dim s as new Stringbuilder()
dim lengte as Integer = ubound(hashedDataBytes)
dim n as integer
for  n=0 to lengte
    s.Append(String.Format("{0,2:x}", hashedDataBytes(n)).Replace(" ", "0"))
next

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 22-08 13:56
Verwijderd schreef op 19 March 2003 @ 15:18:
saweet!! thnx PhoneTech!! het werkt :)

In VB (zonder klasse):
code:
1
2
3
4
5
6
dim s as new Stringbuilder()
dim lengte as Integer = ubound(hashedDataBytes)
dim n as integer
for  n=0 to lengte
    s.Append(String.Format("{0,2:x}", hashedDataBytes(n)).Replace(" ", "0"))
next
np

Gebruik je een DB voor de opslag? Kijk dan ook even naar het byte veldtype. Of binary...

Hier kan je de totale hash gewoon ingooien :)

hth

[ Voor 5% gewijzigd door PhoneTech op 19-03-2003 15:25 ]


Verwijderd

Topicstarter
ik gooi nu gewoon de stringbuilder.toString in de database
is dat onverstandig?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

mwoa, de data wordt 2x zoveel per hash :)

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.


Verwijderd

Topicstarter
hehehe true :)

maar ik verwacht niet dat daar een bottleneck door zal ontstaan. :)
Pagina: 1