Jag har en registrerings applikation varav jag vill slumpa ut lösenordet vid registreringen som sedan skickas till dom via e-post.
Men slumpen kan ju göra så att samma lösenord dyker upp igen, så man måste ju kolla om lösenordet används innan det skickas. Är det upptaget måste man köra det igen?
Är ni samma personer/känner ni varandra eller varför ska detta inlägg ignoreras? Kanske någon annan vill ha svar på just denna fråga så jag tycker diskussionen ska stå kvar.
Personligen tycker inte jag att unika lösenord är extremt viktigt i normala fall, om vi utgår från att lösenordet är kopplat till ett specifikt användarnamn. Man bör dessutom kanske ge användaren möjlighet att byta lösenordet mot något annat och då går det ju inte att spärra lösenord som redan finns (för då vet ju personen att de har hittat någon annans lösenord!).
Jag menade inte att tråden skulle ignoreras, utan bara mitt inlägg, detta p.g.a. att jag skrev en lösning... i fel språk nämligen ASP, inte .NET.
Men jag håller med, att slumpa ut samma lösenord 2 ggr av 10 000 känns inte så farligt, mest för att användarnamnen lär väl skilja sig. Har du en 6-8 tecken med alfabetets alla bokstäver och stora samt små bokstäver så blir det inte ofta den slumpar fram samma lösenord.
Function GeneratePass(length)
sPassw59 = "ABCDEFGHIJKLMNOPQRSTUVXYZ1234567890abcdefghijklmopqrstuvxyz"
Randomize()
locVar = ""
For cLoop = 1 To Length
RndNmbr = Round((Rnd() * 58) +1, 0)
locVar = locVar & Mid(sPassw59, RndNmbr, 1)
Next
GeneratePass = locVar
End Function
Det här är hur jag har gjort min generator, nu kommer mitt förslag på hur man kollar så att någon annan inte har samma, inte testat, men simpelt
StillDoLoop = True
Do While StillDoLoop
'Genererar ett lösenord på 8 tecken
Password = GeneratePass(8)
SQLStmt = "Select Password From Users Where Password = '"& Password &"' "
Set RS = Conn.Execute(SQLStmt)
If RS.EOF Then
StillDoLoop = False
End If
Set RS = Nothing
Loop
Bara ett förslag. Generatorn är jag lite stolt över dock, enkelt att lägga till siffror om man vill ha det också.
Snygg generator, man kanske får göra en copy paste på den :)
Kan hålla med om att testa om lösenordet redan finns är lite överkurs, men det kanske är bra (så länge du inte gör detta när användarna ska skriva in nya lösen ord..av förståliga skäl)
Nåja är inte därför jag skriver utan hmm, host host, du sparar väl för gudsskull inte lösenorden i klartext i databasen?
använd någon funktion till att kryptera den innan du stoppar in dem där tex
Ett annat sätt att generera lösenord på som kan vara användbart ibland är:
string GeneratePassword()
{
byte[] bytes = new byte[10];
Random rand = new Random(unchecked((int)DateTime.Now.Ticks));
rand.NextBytes(bytes);
StringBuilder password = new StringBuilder();
foreach(byte b in bytes)
password.Append(b.ToString("X2"));
return password.ToString();
}