Neste artigo vou mostrar como gerar senhas aleatórias seguindo algumas definições dadas pelo usuário em um programa C#. |
As caixas de seleção (checkbox) funcionam assim:
Quando você marca a caixa de seleção “Requer Caixa
Baixa" , você também deve permitir letras minúsculas, assim o
programa marca a caixa “permitir Caixa Baixa”.
Da mesma forma, se você desmarcar a caixa de seleção “Permitir Caixa
Baixa”, não poderá exigir letras minúsculas, portanto, o programa
desmarca a caixa “Requer Caixa Baixa”.
A lógica para as demais checkbox é a mesma.
O código usado para gerar a senha esta no evento Click do botão Gerar Senha :
Neste código chamamos o método GeraSenhaAleatorio para gerar a senha. Ao final a senha é exibida na caixa de texto txtSenha e com o foco no controle.
Abaixo temos o código do método GeraSenhaAleatoria :
// Gera a senha conforme as definições
private string GeraSenhaAleatoria()
{
const string CAIXA_BAIXA = "abcdefghijklmnopqrstuvwxyz";
const string CAIXA_ALTA = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const string NUMEROS = "0123456789";
const string ESPECIAIS = @"~!@#$%^&*():;[]{}<>,.?/\|";
string outros = txtOutros.Text;
if (chkRequerOutros.Checked && (outros.Length < 1))
{
MessageBox.Show("Você não pode exigir caracteres de uma string em branco.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtOutros.Focus();
return txtSenha.Text;
}
// Faz uma lista de caracteres permitidos
string permitido = "";
if (chkPermiteCaixaBaixa.Checked) permitido += CAIXA_BAIXA;
if (chkPermiteCaixaAlta.Checked) permitido += CAIXA_ALTA;
if (chkPermiteNumeros.Checked) permitido += NUMEROS;
if (chkPermiteEspeciais.Checked) permitido += ESPECIAIS;
if (chkPermiteSublinhado.Checked) permitido += "_";
if (chkPermiteEspaco.Checked) permitido += " ";
if (chkPermiteOutros.Checked) permitido += outros;
// Obtem o numero de caracteres .
int caracteres_minimo = int.Parse(txtMinimo.Text);
int caracteres_maximo = int.Parse(txtMaximo.Text);
int numero_caracteres = Crypto.RandomInteger(caracteres_minimo, caracteres_maximo);
// Satisfaz as definições
string _senha = "";
if (chkRequerCaixaBaixa.Checked &&
(_senha.IndexOfAny(CAIXA_BAIXA.ToCharArray()) == -1))
_senha += RandomChar(CAIXA_BAIXA);
if (chkRequerCaixaAlta.Checked &&
(_senha.IndexOfAny(CAIXA_ALTA.ToCharArray()) == -1))
_senha += RandomChar(CAIXA_ALTA);
if (chkRequerNumeros.Checked &&
(_senha.IndexOfAny(NUMEROS.ToCharArray()) == -1))
_senha += RandomChar(NUMEROS);
if (chkRequerEspeciais.Checked &&
(_senha.IndexOfAny(ESPECIAIS.ToCharArray()) == -1))
_senha += RandomChar(ESPECIAIS);
if (chkRequerSublinhado.Checked &&
(_senha.IndexOfAny("_".ToCharArray()) == -1))
_senha += "_";
if (chkRequerEspaco.Checked &&
(_senha.IndexOfAny(" ".ToCharArray()) == -1))
_senha += " ";
if (chkRequerOutros.Checked &&
(_senha.IndexOfAny(outros.ToCharArray()) == -1))
_senha += RandomChar(outros);
// adiciona os caracteres restantes aleatorios
while (_senha.Length < numero_caracteres)
_senha += RandomChar(permitido);
// mistura os caracteres requeridos
_senha = RandomizeString(_senha);
return _senha;
}
|
Neste
código definimos os grupos padrão de caracteres. Em seguida, criamos uma
string contendo todos os caracteres permitidos. Para cada grupo de
caracteres, ele verifica a caixa de seleção "permitir"
correspondente e, se essa caixa estiver marcada, adiciona os caracteres
corretos à string permitida. Usamos o método RandomChar para escolher um caractere aleatório do grupo apropriado.
Em seguida, o código obtém o tamanho mínimo e máximo da senha. Depois
chama o método Crypto.RandomInteger para obter um comprimento para a
senha entre esses limites.
A classe Crypto é um pouco extensa e seu código foi obtido de uma compilação de código encontrado em diversos sites.(Veja nos fontes do projeto)
Usamos também os métodos RandomChar() e RandomizeString(0 para gerar a senha.
Executando o projeto e definindo alguns critérios iremos obter:
Pegue o projeto completo aqui : CShp_GeraSenhas.zip
(disse Jesus) - 'Porque o coração deste povo
está endurecido,E ouviram de mau grado com seus ouvidos,E fecharam seus
olhos;Para que não vejam com os olhos,E ouçam com os ouvidos,e compreendam
com o coração,e se convertam,e eu os cure.'
Mateus 13:15
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Studio - Dica de produtividade - Quick Launch - Macoratti.net
Visual Studio - Dica de produtividade - Nuget - Macoratti.net