29. srpna 2006

Generování náhodného hesla v ASP

Potřeboval jsem pro jeden projekt, který píšu v klasickém ASP (tedy nikoliv ASP.NET) mít možnost generovat náhodné heslo. Proto jsem si pro tento účel napsal následující funkci.

Je to velice jednoduchá funkce a píšu to sem jen proto, abych na to nezapomněl a pro to, že by se to třeba mohlo někomu hodit.

Zde je kód zmíněné funkce:

'*******************************************************************************
'Funkce pro vygenerování náhodného hesla zadané délky
'*******************************************************************************
Function RandomPassword(lLenght)
'mnozina znaku, ze kterych budu skladat heslo
'zamerne je vynechano velke pismeno O, nula a pismena Z a Y (mala i velka)
Const sPosChars = "abcdefghijklmnopqrstuvwxABCDEFGHIJKLMNPQRSTUVWX123456789"
'definice promennych
Dim lRnd 'nahodne cislo
Dim lPrev 'predchozi nahodne cislo
Dim sRand 'pomocny retezec

  'inicializace nahodnych cisel
  Randomize
  'default funkce
  RandomPassword = ""
  'osetreni delky hesla (default je 6)
  If (lLenght <= 0) Then lLenght = 6

  'pomocna promenna
  sRand = ""
  lPrev = 0
  Do
    'vygeneruju nahodne cislo od 1 do delka moznych znaku
    Do
      'a delam to tak dlouho, dokud se nahodne cislo nelisi od predchoziho nahodneho cisla
      'pro pripad, ze by bylo vygenerovano stejne jako predchozi
      lRnd = CLng((Rnd * Len(sPosChars)) + 1)
    Loop Until (lRnd <> lPrev)
    'ulozim aktualni nahodne cislo do jine promenne
    lPrev = lRnd
    'priradim retezec z pole povolenych znaku do pomocneho retezce
    sRand = sRand & Mid(sPosChars, lRnd, 1)
  Loop Until (Len(sRand) = lLenght)
  'priradim hodnotu funkce
  RandomPassword = sRand
End Function

3 komentáře:

Anonym řekl(a)...

To uz jsem nekde videl ... tusim Ivorius weblog :-) akorat to bylo pro PHP.

Pavla řekl(a)...

Hezká funkce, to si musím zapamatovat.

Bohumír Bednařík (BoboCop) řekl(a)...

Nepopírám, že jsem se inspiroval někde jinde. Abych řekl pravdu, už si nepamatuju, kde to bylo. Já jsem funkci v podstatě pouze přepsal do ASP a upravil jsem řetězec s povolenými znaky. Napsáním článku mi nešlo o to, abych byl chválen za to, jak jsem dobrej, ale spíš jen o to, abych si někde poznamenal takovou docela užitečnou funkci.