• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Cybernavigator

[C#] Key Generator

2 mensagens neste tópico

Boas, venho aqui deixar mais uma Class que criei para gerar uma string com o número de caracteres que o utilizador quiser.

Já devem haver muitos espalhados pela net, mas este é meu e acho que é bastante "customizável"

Deixo a Class e como usar

namespace Pr00f.Strings
{
   class KeyGenerator
   {
       private string m_letters = string.Empty;
       private int m_size = 0;
       public string CharsOfKey
       {
           get
           {
               return m_letters;
           }
           set
           {
               bool virgula = false;
               if (value.IndexOf("\\,") >= 0)
               {
                   virgula = !virgula;
                   value = value.Replace("\\,", "");
               }
               if (value.IndexOf("[0-9]") >= 0)
               {
                   value = value.Replace("[0-9]", "");
                   value = value.Replace(",", "");
                   value += "0123456789";
               }
               if (value.IndexOf("[a-z]") >= 0)
               {
                   value = value.Replace("[a-z]", "");
                   value = value.Replace(",", "");
                   value += "abcdefghijklmnopqrstuvwxyz";
               }
               if (value.IndexOf("[A-Z]") >= 0)
               {
                   value = value.Replace("[A-Z]", "");
                   value = value.Replace(",", "");
                   value += "abcdefghijklmnopqrstuvwxyz".ToUpper();
               }
               if (value.IndexOf("[@]") >= 0)
               {
                   value = value.Replace("[@]", "");
                   virgula = true;
                   value += "\\\"#$%&/()=?»«'}][{€§£@|€*`´+~^ºª-_.:;<>¨";
               }
               if (virgula)
                   value += ",";
               m_letters = value;
           }
       }
       public int SizeOfKey
       {
           get
           {
               return m_size;
           }
           set
           {
               m_size = value;
           }
       }
       public string Generate()
       {
           return Generate(m_letters, SizeOfKey);
       }
       private string Generate(string chars, int size)
       {
           System.Random rnd = new System.Random();
           string m_str = string.Empty;
           int t_pos;
           for (int i = 0; i < size; i++)
           {
               t_pos = rnd.Next(chars.Length);
               m_str += chars[t_pos].ToString();
           }
           return m_str;
       }
   }
}

Isto funciona assim, no main ou no butão chamam a class, passo a explicar e deixo tabém o que a função vos permite fazer

           KeyGenerator mKey = new KeyGenerator();
           mKey.SizeOfKey = 20;
           mKey.CharsOfKey = "adbc10";
           string resultado = mKey.Generate();

A string resultado vai ter uma chave de 20 caracteres sorteados aleatóriamente, apenas com os caracteres 'a' , 'd' , 'b' , 'c' , '1' e '0'

por exemplo: "d1c10bbbda0aa1cab1bb"

Agora podem meter os caracteres que quiserem, tornei isto um pouco mais dinâmico, se quiserem o abcedario todo basta fazerem o seguinte

           KeyGenerator mKey = new KeyGenerator();
           mKey.SizeOfKey = 20;
           mKey.CharsOfKey = "[a-z]";
           string resultado = mKey.Generate();

o resultado será qualquer coisa como "zfnhjjrhgiedlbctipmh"

Há mais combinações, passo a citar:

[a-z] = abcedario completo minusculo

[A-Z] = abcedario completo maiusculo

[0-9] = todos os numeros

[@] = Caracteres especiais (não inclui o espaço)

Para fazer combinações podem fazer assim

           KeyGenerator mKey = new KeyGenerator();
           mKey.SizeOfKey = 20;
           mKey.CharsOfKey = "[a-z],[0-9],[@]";
           string resultado = mKey.Generate();

Exemplo do resultado acima = "mn¨a)d]a<+te7ª~s.»ªl"

reparem que a virgula é excluída da string gerada, fiz com que fosse adicionado como caracter especial, vou dar um exemplo com os numeros e os caracteres especiais eo abcedario minusculo

           KeyGenerator mKey = new KeyGenerator();
           mKey.SizeOfKey = 20;
           mKey.CharsOfKey = "[0-9],[a-z]\\,\\\"";
           textBox1.Text = mKey.Generate();

exemplo do resultado = "u1"4\pz"y3i4399x\tx,"

Para terminar deixo aqui os caracteres especiais e como os adicionar:

\\ = Caracter "\"

\\, = Caracter ","

\" = Caracter """ (aspas)

Espero que tenham gostado. Comentem =)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora