Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Generatore di password
Forum - C# / VB.NET - Generatore di password

Avatar
DavidP (Normal User)
Pro


Messaggi: 87
Iscritto: 31/08/2009

Segnala al moderatore
Postato alle 13:22
Domenica, 22/05/2011
Codice sorgente - presumibilmente VB.NET

  1. Imports System
  2. Imports System.IO
  3. Imports System.Text
  4.  
  5. Public Class Form1
  6.     Dim Buchstaben As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"
  7.     Dim r As New Random
  8.     Dim conto As Integer
  9.  
  10.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  11.         conto = conto + 4
  12.         Label1.Text = "Password generate: " & conto
  13.         For i As Integer = 1 To NumericUpDown1.Value
  14.             generieren()
  15.         Next
  16.         TextBox1.Text = TextBox1.Text & vbNewLine
  17.     End Sub
  18.  
  19.     Private Sub generieren()
  20.         If CheckBox1.Checked = True And CheckBox2.Checked = False And CheckBox3.Checked = False Then
  21.             Try
  22.                 TextBox1.Text += Buchstaben.Substring(r.Next(1, 26), 1)
  23.             Catch ex As Exception
  24.                 MsgBox(ex.Message)
  25.             End Try
  26.  
  27.         ElseIf CheckBox1.Checked = True And CheckBox2.Checked = True And CheckBox3.Checked = False Then
  28.             Try
  29.                 TextBox1.Text += Buchstaben.Substring(r.Next(1, 52), 1)
  30.             Catch ex As Exception
  31.                 MsgBox(ex.Message)
  32.             End Try
  33.         ElseIf CheckBox1.Checked = True And CheckBox2.Checked = True And CheckBox3.Checked = True Then
  34.             Try
  35.                 TextBox1.Text += Buchstaben.Substring(r.Next(1, 62), 1)
  36.             Catch ex As Exception
  37.                 MsgBox(ex.Message)
  38.             End Try
  39.         End If
  40.  
  41.     End Sub
  42.  
  43.     Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
  44.         TextBox1.Text = ""
  45.         conto = 0
  46.         Label1.Text = "Password generate: " & conto
  47.     End Sub
  48.  
  49.     Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  50.         Dim percorso As String
  51.         Dim contenuto As String
  52.         percorso = "C:\password.txt"
  53.         contenuto = TextBox1.Text
  54.         File.WriteAllText(percorso, contenuto)
  55.     End Sub
  56.  
  57. End Class


allora le mie domande sono:
Il mio programma cosi è veloce?:om:
come posso leggere lettere in arrey ad esempo dalla 1 a 26(lettere maiuscole) e da 56a 62(numeri) in modo da creare una password di sole lettere maiuscole e numeri?:(
Ho allegato anche un immagine per farvi vedere come l'ho strutturato.
P.S. nell' immagine c'è anche lo spunto per i simboli ma per ora è inutilizzato
Grazie infinite
DavidP


DavidP ha allegato un file: gen.JPG (51355 bytes)
Clicca qui per guardare l'immagine


DavidP
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
1
Down
V
Segnala al moderatore
Postato alle 10:40
Martedì, 24/05/2011
Se non avessi copiato il codice, sapresti come farlo.

E no, il tuo codice è decisamente lento, per almeno tre motivi:
- Ad ogni step, aggiungi il nuovo carattere direttamente alla textbox. Modificare proprietà che hanno un riscontro sulla GUI richiede una quantità sostanziale di tempo in più;
- In ogni if usi un blocco Try. Stare in attesa di eccezioni e catturarle è decisamente uno spreco di risorse, tanto più che non hai alcun motivo di aspettarti un'eccezione (a patto di usare almeno gli indici giusti);
- Controlli ogni volta lo stato delle CheckBox. E' meglio usare una variabile locale con quel valore booleano o sopperire a queste condizioni con l'uso di funzioni lambda.


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM
Avatar
willy_80 (Normal User)
Newbie


Messaggi: 5
Iscritto: 06/03/2009

Up
1
Down
V
Segnala al moderatore
Postato alle 16:56
Martedì, 24/05/2011
1) Il comando Chr(...) restituisce il carattere in formato string del codice ascii inserito tra le parentesi.

2) I numeri da "0" a "9" hanno codice da 48 a 57
I caratteri da "A" a "Z" hanno codice da 65a 90
I caratteri da "a" a "z" hanno codice da 97 a 122
ecc...

3) Sapendo ciò basta che crei un generatore di numeri random che va da 1 a 255 poi dopo aver generato il numero lo confronti coi range che ti interessano e se è valido lo tieni altrimenti ne generi uno nuovo, oppure potresti delimitare i limiti del generatore nei range voluti.



Un grande saggio un giorno mi disse: "Non importa quanta esperienza hai il lampo di genio che risolve il problema può arrivare anche da un principiante"
PM