Generatore di Passwords

Stato
Chiusa ad ulteriori risposte.

MastroLindo

Utente abituale
12 Aprile 2018
149
18
venezia
EXCEL 2016
0
Un piccolo programmino per generare Passwords.
Impostando il numero di caratteri di lunghezza e il numero delle password, pigiando il bottone ottengo da 1 a 5000 passwords.
Io l'ho limitato a 5000 ma se ne possono ottenere molte di più fintantoché c'è memoria libera:
Codice:
Option Explicit


Sub GeneraPassword()
Dim arrayChar() As String, arrayPwd() As String, lunghezza As Integer
Dim a As Integer, numeroPassword As Integer, varChar As String, pwd As String
Dim c As Integer, Inizio As Single, Fine As Single
    
    Randomize Timer
    Inizio = Timer
    varChar = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,1,2,3,4,1,2,3,4,5,6,7,8,9,0,w,y,j,k,x,Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M,!,£,$,&,^,+,@,#"
    arrayChar = Split(varChar, ",")
    numeroPassword = Worksheets("Foglio1").Range("F4")
    ReDim arrayPwd(numeroPassword - 1) As String
    lunghezza = Worksheets("Foglio1").Range("E4")
    Range("a2:a100000").ClearContents
    For a = 1 To numeroPassword
        pwd = genera(arrayChar, lunghezza - 1)
        arrayPwd(a - 1) = pwd
     Next a
     For a = 1 To numeroPassword
        [a2].Offset(a - 1, 0) = CStr(arrayPwd(a - 1))
     Next
     Fine = Timer
Range("H4") = Fine - Inizio
End Sub


Private Function genera(arr, num_cifre)
Dim b As Integer, k As Integer, numero As Integer, variabile As String
     
     numero = UBound(arr)
     For b = 0 To num_cifre
         k = Int(Rnd(1) * numero)
         variabile = variabile & arr(k)
     Next
     genera = variabile
End Function


Private Function controllo(arr, search) As Integer
Dim found As Boolean
    controllo = 0
        found = InStr(1, "" & Join(arr, "") & "", "" & search & "") > 0
    If found Then
    controllo = InStr(1, Join(arr, ""), search)
    End If
End Function
 

Allegati

Ultima modifica di un moderatore:
  • Like
Reactions: Francesco V

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
22.845
1.865
Como
2011MAC 2016WIN
519
Grazie anche di questa condizione. SmileForum
 
G

gibra

Guest
Ho visionato il file: ottimo lavoro!
Complimenti.cappello_saluta

Grazie di averlo condiviso.
Saluto_saluto
 

Marius44

VBA Expert
Moderatore
Expert
9 Settembre 2015
5.961
115
76
Catania
Excel2010
177
Ciao
Complimenti. Veramente un ottimo lavoro.
Mi sono permesso aggiungere (in quello che terrò nella mia "cassetta degli attrezzi" queste due righe nella macro GeneraPassword per eliminare i precedenti.
Codice:
ur = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Range("A2:A" & ur).ClearContents
Ancora complimenti. Ciao,
Mario
 

MastroLindo

Utente abituale
12 Aprile 2018
149
18
venezia
EXCEL 2016
0
Ciao
Complimenti. Veramente un ottimo lavoro.
Mi sono permesso aggiungere (in quello che terrò nella mia "cassetta degli attrezzi" queste due righe nella macro GeneraPassword per eliminare i precedenti.
Codice:
ur = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Range("A2:A" & ur).ClearContents
Ancora complimenti. Ciao,
Mario
Grazie.
La riga che cancella le vecchie password c'è già

Range("a2:a100000").ClearContents

Accetto molto, (molto) volentieri i consigli di tutti.
SmileForum
 

Marius44

VBA Expert
Moderatore
Expert
9 Settembre 2015
5.961
115
76
Catania
Excel2010
177
Ciao
Ti chiedo scusa ma non l'avevo affatto vista quella riga e, data la velocità di esecuzione, non notavo che cancella i precedenti.

Ciao e ancora complimenti,
Mario
 

Rubik72

Excel/VBA Expert
Supermoderatore
Expert
12 Dicembre 2015
6.011
245
47
Cosenza
Excel 2016
221
Complimenti, bel lavoro.
Un suggerimento, io sostituirei questo ciclo:
Codice:
     For a = 1 To numeroPassword
        [a2].Offset(a - 1, 0) = CStr(arrayPwd(a - 1))
     Next
con questo unico comando:
Codice:
     Range("A2").Resize(numeroPassword) = Application.Transpose(arrayPwd)
 

scossa

Excel/VBA Expert
Moderatore
Expert
14 Luglio 2015
1.302
50
59
Verona Provincia
scossavr.altervista.org
.
13
Accetto molto, (molto) volentieri i consigli di tutti.
Ciao,

ho provato le prestazioni del tuo codice: con 500 password da generare impiega circa 5 secondi; con poche modifiche si può scendere a circa di 0,25 secondi per generare 5.000 password.

Come?
Ad esempio, come suggerito anche da Rubik, scrivendo nel foglio con un'unica istruzione l'array delle password generate.
Ma anche una cosa banale come portare il -1 dell'istruzione
Codice:
pwd = genera(arrayChar, lunghezza - 1)
fuori dal ciclo:
Codice:
lunghezza = Worksheets("Foglio1").Range("E4") - 1
ha il suo peso nel codice modificato:


Codice:
Sub GeneraPassword()
  [COLOR=#ff0000]Const varChar As String[/COLOR] = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,1,2,3,4,1,2,3,4,5,6,7,8,9,0,w,y,j,k,x,Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M,!,£,$,&,^,+,@,#"
  Dim arrayChar() As String, [COLOR=#ff0000]arrayPwd As Variant[/COLOR], lunghezza As Integer
  Dim a As Integer, numeroPassword As Integer
  Dim Inizio As Single, Fine As Single
    
  Randomize Timer
  Inizio = Timer
  arrayChar = Split(varChar, ",")
  numeroPassword = Worksheets("Foglio1").Range("F4")
  arrayPwd = Range("ZZ1:ZZ" & numeroPassword).Value
  [COLOR=#ff0000]lunghezza = Worksheets("Foglio1").Range("E4") - 1[/COLOR]
  Range("a2:a100000").ClearContents
  For a = 1 To numeroPassword
      arrayPwd(a, 1) = genera(arrayChar, lunghezza)
  Next a
  [COLOR=#ff0000]Range("A2:A" & numeroPassword + 1).Value = arrayPwd[/COLOR]
   Fine = Timer
Range("H4") = Fine - Inizio
End Sub
 

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
22.845
1.865
Como
2011MAC 2016WIN
519
Ciao Mastrolindo,
posta il file con le modifiche cosi lo rendiamo disponibile anche agli altri.
Grazie
 
G

gibra

Guest
Concordo con ges (cappello_saluta)

Aggiungo un suggerimento: nella colonna Password Generate imposta il font Courier New, in questo modo si ha una visualizzazione migliore dei caratteri, a mio modo di vedere.
 

MastroLindo

Utente abituale
12 Aprile 2018
149
18
venezia
EXCEL 2016
0
Generatore password con modifiche suggerite.
Provato con 30.000 password con lunghezza 1000 caratteri impiega 10,375 secondi, con il mio portatile e cpu e memoria. Mentre con 30.000 password con lunghezza 2000 caratteri impiega 102,62 secondi.
Grazie per i suggerimenti se ce ne sono altri sono sempre bene accolti.SmileForum
 

Allegati

MastroLindo

Utente abituale
12 Aprile 2018
149
18
venezia
EXCEL 2016
0
Concordo con ges (cappello_saluta)

Aggiungo un suggerimento: nella colonna Password Generate imposta il font Courier New, in questo modo si ha una visualizzazione migliore dei caratteri, a mio modo di vedere.
Avevo già postato il nuovo generatore pw. senza l'ultima modifica suggerita.:applausi:
Hai ragione perché c'è il problema di lettura della I maiscola e i minuscola che si può confondersi con la L maiuscola e l minuscola.
Grazie
 

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
5.255
245
43
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
378
Ciao Mastro, intanto mi complimento per il tuo dinamismo e la rapidità di apprendimento: questo che presenti è un lavoretto che mostra già un'ottima comprensione di strumenti non proprio immediati GiveMeFive
Ti faccio solo notare una cosa: nel listato c'è una Function (controllo) che non viene mai utilizzata all'interno della procedura. Forse una prova iniziale poi scartata? Saluto_saluto
 

MastroLindo

Utente abituale
12 Aprile 2018
149
18
venezia
EXCEL 2016
0
Ciao Mastro, intanto mi complimento per il tuo dinamismo e la rapidità di apprendimento: questo che presenti è un lavoretto che mostra già un'ottima comprensione di strumenti non proprio immediati GiveMeFive
Ti faccio solo notare una cosa: nel listato c'è una Function (controllo) che non viene mai utilizzata all'interno della procedura. Forse una prova iniziale poi scartata? Saluto_saluto
Grazie.SmileForum
Generatore pw con tutti i suggerimenti.
 

Allegati

ges

Excel/VBA Expert
Amministratore
Expert
21 Giugno 2015
22.845
1.865
Como
2011MAC 2016WIN
519
Grazie per l'integrazione. SmileForum

Il programma è utilissimo anche e soprattutto per imparare e o capire la gestione di talune procedure del codice.
Nel concreto mi domanderei: "ma che me ne faccio di 30.000 password"? :;):
 
Stato
Chiusa ad ulteriori risposte.

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!