15. februar 2005 - 12:21Der er
13 kommentarer og 1 løsning
Generere adgangskode og password
Til et onlinesystem skal jeg have genereret x antal adgangskode/password kombinationer.
Krav: Mulighed for et stort antal kombinationer Nemt at eksportere til en database Jeg skal kunne angive hvilke tegn der skal anvendes (fx. skal ikke visuelt lige tegn bruges, som 1 og l eller B og 8) Det må gerne være billig eller gratis
Jeg forestiller mig at kunne generere fx 100000 kombinationer, importere dem i min database, og på et senere tidspunkt kunne generere flere kombinationer.
Jeg vurdere at kode det selv, men findes der en eksisterende løsning bruger jeg da heller tiden til noget andet.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Men hvor "random" er den? Når jeg kalder metoden flere gange i træk, giver den det samme resultat.
public string newPassword(int l) { char[] valid = { 'A', 'B', 'C', '2', '3', '4' }; Random rng = new Random();
StringBuilder sb = new StringBuilder(""); for(int i = 0; i < l; i++) { sb.Append(valid[rng.Next(valid.Length)]); } return sb.ToString(); } Jeg har så en anden metode newCode, som blot indeholder nogle andre tegn.
Hvis jeg forsøger at generere 5 kombinationer med
for(int i = 0; i < 5; i++) { newCode(6)); newPassword(6)); }
Giver den det samme resultat hver gang, og sekvensen er den samme i "kode" som i "password". Hvordan får jeg forskellige koder, og kode og password med ulige mønstre?
OK, jeg har rettet til så den danner forskellige strings for hvert nye kald. Men hvordan kan jeg få min metode newPassword til at lave password som ikke følger det samme mønster som newCode?
Lige nu bliver en kode fx DEF567, mens et password bliver ABC234 (jeg er ikke så kreativ med tegn endnu). Problemet er altså at et tegn i kode altid tilsvarer tegnet på samme position i char[] i password.
Jeg dropper den anden metode, for kode og password kan godt indeholde de samme tegn. Så kører det.
Vil det være mulig at identiske koder dannes? Det kan jeg vel løse blot ved at fjerne duplikater når jeg får kodene ind i databasen? Om et password er identisk med en kode gør ikke så meget.
Og et matematisk spørgsmål til sidst: Antallet mulige kombinationer er vel længden på strengen opløftet i antallet af gyldige tegn?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.