Hvad gør det her?

Tags:    c#

Hej jeg har den her kode, den irretere mig lidt....
for jeg ved ikke helt hvad det er de forskellige ting gør...
så jeg kan ikke ændre i lortet...

if (Server.verify)
{
if (verify == "--" || Verify != BitConverter.ToString(
md5.ComputeHash(enc.GetBytes(Server.salt + name))).
Replace("-", "").ToLower().TrimStart('0'))
{
if (ip != "127.0.0.1")
{
Kick("Login failed! Try again."); return;
}
}
}

bare sig hvis der er noget kode i mangler for at forklare mig det...



Indlæg senest redigeret d. 21.12.2010 21:14 af Bruger #16191
Brug kodeblokkene, gør det nemmere at læse:
Fold kodeboks ind/udKode 


For mig ser det ud til den tjekker først om brugeren er logget gyldigt ind. Hvis ikke brugeren er det, så tjekker den om brugeren forbinder fra samme maskine (127.0.0.1). Hvis brugeren heller ikke gør det så smider den ham af.

Men kan ikke rigtig gætte de eksakte detaljer siden jeg ikke ved hvordan Server og enc strukturerne ser ud. Er også forvirret over der er 'verify' og 'Verify' hvoraf den ene yderligere bliver refereret til gennem Server objektet.



Brug kodeblokkene, gør det nemmere at læse:
Fold kodeboks ind/udKode 


For mig ser det ud til den tjekker først om brugeren er logget gyldigt ind. Hvis ikke brugeren er det, så tjekker den om brugeren forbinder fra samme maskine (127.0.0.1). Hvis brugeren heller ikke gør det så smider den ham af.

Men kan ikke rigtig gætte de eksakte detaljer siden jeg ikke ved hvordan Server og enc strukturerne ser ud. Er også forvirret over der er 'verify' og 'Verify' hvoraf den ene yderligere bliver refereret til gennem Server objektet.


OG... det ser ud til at Server.verify er en streng, men behandles som en bool i if'en.

OG... det ser ud til at den laver et MD5 password tjek, (selvom variablen hedder 'name') - men det ender ud med at den alligevel kun vil acceptere brugere fra 'localhost'/127.0.0.1



OG... det ser ud til at Server.verify er en streng, men behandles som en bool i if'en.

Jeg tror, at det er to forskellige variabler. 'Server.verify' er en bool, som hvis den er true får serveren til at verificere logins.
'verify' er en streng, som indeholder en MD5 sum af serverens salt konkateneret med brugerens navn.



okay jeg siger tak for svarene, so far...
men, nogen der kan sige mig hvad en "MD5" er for noget?
"name" er brugeren der joiners brugernavn
"salt" ANER jeg ikke hvad gør... men den er sat til at være ""...

Bare sig hvis der er nogle områder hvor i skal bruge noget mere kode. Så skal jeg nok hente det.



Indlæg senest redigeret d. 23.12.2010 11:50 af Bruger #16191
gør den her kode at "Server.salt" får en ny "random" værdi??
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 23.12.2010 11:53 af Bruger #16191
her er noget mere kode til denne Post
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 23.12.2010 12:03 af Bruger #16191
nogen der kan sige mig hvad en "MD5" er for noget?


MD5 er en såkaldt hashing algoritme. Det producerer et fast antal bytes (16 i tilfældet med MD5) ud fra et argument, som også er et antal bytes.
Det er nemt at beregne denne MD5 sum, men du kan ikke beregne argumentet, som producerede summen...kun ved at prøve dig frem.

Det bruges typisk til at verificere logins, så man ikke behøver at sende et ukrypteret password over nettet eller gemme et ukrypteret password i en database. Man beregner bare MD5 summen af passwordet og sammenligner så resultatet med det, som man har gemt, som er et hash af det rigtige password.

Tænk på tværsummen af et tal. Tværsummen af 45 er 9. Men givet tallet 9, kan du ikke finde ud af det oprindelige tal.

"salt" ANER jeg ikke hvad gør... men den er sat til at være ""

Salt bruges til at gøre det sværere at finde de oprindelige passwords, og konkateneres faktisk bare til det, som skal hashes. F.eks. et password.
MD5 summen af 'Hello, World!' er 65a8e27d8879283831b664bd8b7f0ad4. Hvis du får fat i denne sum fra min database, så kan du prøve dig frem, og på et eller andet tidspunkt kommer du frem til 'Hello, World!', eller du kan slå op i en såkaldt rainbow table, som indeholder summerne.
Men hvis jeg lige smider strengen 'ajfknnf3_qn*fa+læ9fHJg' foran, så får vi 'd9aaf7dd075124f52da23f6e6f13e481'. Hvis du kan trække denne ud af min database, så hjælper det dig ikke meget, for det vil tage meget længere tid at prøve sig frem (medmindre du også kender saltet).



nogen der kan sige mig hvad en "MD5" er for noget?


MD5 er en såkaldt hashing algoritme. Det producerer et fast antal bytes (16 i tilfældet med MD5) ud fra et argument, som også er et antal bytes.
Det er nemt at beregne denne MD5 sum, men du kan ikke beregne argumentet, som producerede summen...kun ved at prøve dig frem.

Det bruges typisk til at verificere logins, så man ikke behøver at sende et ukrypteret password over nettet eller gemme et ukrypteret password i en database. Man beregner bare MD5 summen af passwordet og sammenligner så resultatet med det, som man har gemt, som er et hash af det rigtige password.

Tænk på tværsummen af et tal. Tværsummen af 45 er 9. Men givet tallet 9, kan du ikke finde ud af det oprindelige tal.

"salt" ANER jeg ikke hvad gør... men den er sat til at være ""

Salt bruges til at gøre det sværere at finde de oprindelige passwords, og konkateneres faktisk bare til det, som skal hashes. F.eks. et password.
MD5 summen af 'Hello, World!' er 65a8e27d8879283831b664bd8b7f0ad4. Hvis du får fat i denne sum fra min database, så kan du prøve dig frem, og på et eller andet tidspunkt kommer du frem til 'Hello, World!', eller du kan slå op i en såkaldt rainbow table, som indeholder summerne.
Men hvis jeg lige smider strengen 'ajfknnf3_qn*fa+læ9fHJg' foran, så får vi 'd9aaf7dd075124f52da23f6e6f13e481'. Hvis du kan trække denne ud af min database, så hjælper det dig ikke meget, for det vil tage meget længere tid at prøve sig frem (medmindre du også kender saltet).


nåå xD
tak for den lange forklaring xD
det gav mig et bedere overblik =)



t