Avatar billede canedo Nybegynder
31. juli 2007 - 10:28 Der er 16 kommentarer og
2 løsninger

Random password i ASP

Jeg har fundet følgende script et sted her på siden:

<%
' Deklarer variable
DIM tmp, pwd, pwdlength

' Initializer varibale
tmp = ""
pwd = ""
pwdlength = 8  ' ønsket password længde

for i=1 to pwdlength
  do
    Randomize
    tmp = Int((122-48) * Rnd + 48)
  loop until tmp<58 or (tmp>64 and tmp<91) or tmp>97
  pwd = pwd & chr(tmp)
next

Response.Write("Password: " & pwd)
%>



Det er meget smart - for det genererer en kode som så kan copy-pastes ind hvor man skal bruge det.

Hvordan laves det om, således at der KUN anvendes små bogstaver?

Hvordan kan jeg være sikker på, at den samme kode ikke kommer flere gange?


/Camilla
Avatar billede madeindk Nybegynder
31. juli 2007 - 10:53 #1
Måske lidt en maxpower, men kan du ikke bare lowercase passwordet :)

<%
' Deklarer variable
DIM tmp, pwd, pwdlength

' Initializer varibale
tmp = ""
pwd = ""
pwdlength = 8  ' ønsket password længde

for i=1 to pwdlength
  do
    Randomize
    tmp = Int((122-48) * Rnd + 48)
  loop until tmp<58 or (tmp>64 and tmp<91) or tmp>97
  pwd = pwd & LCase(chr(tmp))
next

Response.Write("Password: " & pwd)
%>
Avatar billede canedo Nybegynder
31. juli 2007 - 11:01 #2
madeindk > det var da en god idé! Så er den løst i hvert fald...

Det er næste er så, at den ikke altid skriver tal. Jeg har lige opdaget at den ikke altid skriver tal. Kan det lade sig gøre at få den til altid at skrive tal?
Avatar billede madeindk Nybegynder
31. juli 2007 - 11:52 #3
Ja, det kan bestemt sagtens lade sig gøre. Men så er der jo ingen grund til at lowercaser mere kan man sige ;) Men denne funktion burde kunne nemt kunne klare det.

<%
Randomize
Response.Write Int(rnd*9)+1
%>
Avatar billede madeindk Nybegynder
31. juli 2007 - 11:54 #4
Nårh nej, den skal jo lade en streng på 8 tegn ikk? Så skal du nemlig gøre sådan her i stedet for.

<%
strLength = 8
strPwd = ""
For i = 1 to strLength
  strPwd = strPwd & Int(rnd*9)+1
Next
Response.Write strPwd
%>

Mener nok det skla kunne lade sig gøre, sidder pt. på min skole, så kan ikke rigtig teste det :)
Avatar billede madeindk Nybegynder
31. juli 2007 - 11:55 #5
Plus at du naturligvis også lige skal sætte Randomize ind ;)

<%
Randomize
strLength = 8
strPwd = ""
For i = 1 to strLength
  strPwd = strPwd & Int(rnd*9)+1
Next
Response.Write strPwd
%>
Avatar billede canedo Nybegynder
31. juli 2007 - 12:03 #6
Okay, tror ikke jeg fik mig formuleret klart nok... Det den skal lave er en kode som minimum indeholder ET tal. Resten skal bestå af små bogstaver... Vil det også kunne lade sig gøre?
Avatar billede madeindk Nybegynder
31. juli 2007 - 12:13 #7
Ja, det kan også nemt lade sig gøre skulle jeg da mene :) Ved ikke om du kan gennemskue hvad jeg har lavet nu, men nu dividerer jeg password længden og indsætter så det fuldstændige tilfældige tal der, så det altid er i midten.

' Deklarer variable
DIM tmp, pwd, pwdlength

' Initializer varibale
tmp = ""
pwd = ""
pwdlength = 8  ' ønsket password længde
insertAfter = Round(pwdLength/2)

for i=1 to pwdlength
  do
    Randomize
    If Int(i) = Int(insertAfter) Then
      tmp = Int(Rnd*9)+1
    Else
      tmp = Int((122-48) * Rnd + 48)
    End If
  loop until tmp<58 or (tmp>64 and tmp<91) or tmp>97
  pwd = pwd & chr(tmp)
next

Response.Write("Password: " & LCase(pwd))
%>
Avatar billede canedo Nybegynder
31. juli 2007 - 12:22 #8
madeindk > den er stadig ikke helt god nok... der må mangle noget. Du kan se resultatet her: http://neanders.com/pw.asp
Avatar billede madeindk Nybegynder
31. juli 2007 - 12:29 #9
Hmm... Prøv med denne her så, det er fandme også irriterende jeg ikke kan teste.

<%
pwdLength = 8
intPlace = Round(pwdLength / 2)

Randomize
For i = 1 to pwdLength
  If CInt(i) = CInt(intPlace) Then
    strPwd = strPwd & Int(Rnd*9)+1
  Else
    strPwd = strPwd & Chr(Int(26 * Rnd + 97))
  End If
Next

Response.Write strPwd
%>
Avatar billede canedo Nybegynder
31. juli 2007 - 12:34 #10
Okay, det ser umiddelbart rigtigt godt ud. Jeg vender lige tilbage i denne når jeg er sikker på at den er god nok :-)


/Camilla
Avatar billede madeindk Nybegynder
31. juli 2007 - 12:37 #11
Ja, det ser umiddelbart fint ud... Smider et svar, så kan du bare acceptere hvis du synes det fungerer optimalt ;)
Avatar billede madeindk Nybegynder
01. august 2007 - 16:58 #12
Har du fundet ud af om det kunne bruges Camilla :)
Avatar billede canedo Nybegynder
02. august 2007 - 11:30 #13
Ja - jeg har fundet ud af, at tallet gerne skal komme frem forskelligt imellem 1 tal og max 7 tal pr kode. I alt skal koden bestå af 8 cifre. Placeringen af tallet (tallene) skal gerne variere... det begynder at blive kompliceret. Er det noget som er muligt at sætte ind i denne kode, eller skal der laves noget helt nyt?


/Camilla
Avatar billede morhan Novice
02. august 2007 - 14:11 #14
<%
' Deklarer variable
DIM tmp, pwd, pwdlength, pos

' Initializer varibale
tmp = ""
pwd = ""
pwdlength = 8  ' ønsket password længde

Randomize

for i=1 to pwdlength
    pwd = pwd & Mid("abcdefghijklmnopqrstuvwxyz", Int(26*Rnd)+1, 1)
next

For i=0 To 7*Rnd
    pos = Int(pwdlength*Rnd)
    tmp = Mid("0123456789", Int(10*Rnd)+1, 1)
    pwd = Left(pwd, pos) & tmp & Mid(pwd, pos+2)
Next

Response.Write("Password: " & pwd)
%>

men det samme password kan godt komme igen, på et tidspunkt
Avatar billede canedo Nybegynder
02. august 2007 - 15:20 #15
super - tester det når jeg kommer hjem.

/Camilla
Avatar billede canedo Nybegynder
03. august 2007 - 22:08 #16
Læg et svar morhan, dit forslag virker helt som det skal :-)
Avatar billede canedo Nybegynder
07. august 2007 - 10:03 #17
Jeg afventer svar fra morhan :-)
Avatar billede canedo Nybegynder
31. oktober 2007 - 09:02 #18
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester