segunda-feira, 31 de janeiro de 2011

Gerador de Senhas em C#

Classe para gerar senhas, considerando 3 tipos de senhas: apenas letras, apenas números e letras e números.  Bom divertimento!

   1: using System;
   2: using System.Collections.Generic;
   3: using System.Linq;
   4: using System.Text;
   5:  
   6: namespace MyLibrary.Util
   7: {
   8:     /// <summary>
   9:     /// Classe de senha
  10:     /// </summary>
  11:     public static class PasswordUtil
  12:     {
  13:     
  14:         #region Metodos
  15:  
  16:         /// <summary>
  17:         /// Gera uma nova senha conforme os parametros
  18:         /// </summary>
  19:         /// <param name="tipo">Tipo da senha</param>
  20:         /// <param name="tamanho">Tamanho da senha</param>
  21:         /// <returns></returns>
  22:         public static string Generate(TypePassword tipo, byte tamanho)
  23:         {
  24:             switch (tipo)
  25:             {
  26:                 case TypePassword.Alfanumerico:
  27:                     return GeraSenhaAlfanumerico(tamanho);
  28:                 case TypePassword.Alfa:
  29:                     return GeraSenhaAlfa(tamanho);
  30:                 case TypePassword.Numerico:
  31:                     return GeraSenhaNumerico(tamanho);
  32:                 default:
  33:                     return GeraSenhaAlfanumerico(tamanho);
  34:             }            
  35:         }
  36:         
  37:         /// <summary>
  38:         /// Gera uma senha com letras e numeros
  39:         /// </summary>
  40:         /// <param name="tamanho">Tamanho da senha</param>
  41:         /// <returns></returns>
  42:         private static string GeraSenhaAlfanumerico(byte tamanho)
  43:         {
  44:             var sb = new StringBuilder();
  45:             var r = new Random();
  46:             for (byte i = 0; i < tamanho; i++)
  47:             {
  48:                 var c = (char)r.Next(65, 90);
  49:                 var n = r.Next(0, 9);
  50:                 var b = r.Next(-1,1);
  51:                 if( Convert.ToBoolean(b))
  52:                     sb.Append(c);
  53:                 else
  54:                     sb.Append(n);
  55:             }
  56:             return sb.ToString();
  57:         }
  58:  
  59:         /// <summary>
  60:         /// Gera uma senha apenas com letras
  61:         /// </summary>
  62:         /// <param name="tamanho">Tamanho da senha</param>
  63:         /// <returns></returns>
  64:         private static string GeraSenhaAlfa(byte tamanho)
  65:         {
  66:             var sb = new StringBuilder();
  67:             var r = new Random();
  68:             for (byte i = 0; i < tamanho; i++)
  69:             {                
  70:                 var c = (char)r.Next(65, 90); // Apenas texto
  71:                 sb.Append(c);
  72:             }
  73:             return sb.ToString();
  74:         }
  75:  
  76:         /// <summary>
  77:         /// Gera uma senha apenas com numeros
  78:         /// </summary>
  79:         /// <param name="tamanho">Tamanho da senha</param>
  80:         /// <returns></returns>
  81:         private static string GeraSenhaNumerico(byte tamanho)
  82:         {
  83:             var sb = new StringBuilder();
  84:             var r = new Random();
  85:             for (byte i = 0; i < tamanho; i++)
  86:             {
  87:                 var n = r.Next(0, 9); // Apenas numeros
  88:                 sb.Append(n);
  89:             }
  90:             return sb.ToString();
  91:         }
  92:         #endregion 
  93:     }
  94:  
  95:     /// <summary>
  96:     /// Tipo da senha a ser gerada
  97:     /// </summary>
  98:     public enum TypePassword
  99:     { 
 100:         /// <summary>
 101:         /// Letras e numeros
 102:         /// </summary>
 103:         Alfanumerico,
 104:         
 105:         /// <summary>
 106:         /// Apenas letras
 107:         /// </summary>
 108:         Alfa,
 109:  
 110:         /// <summary>
 111:         /// Apenas numeros
 112:         /// </summary>
 113:         Numerico
 114:     }
 115: }

Nenhum comentário:

Postar um comentário