Jump to content

Chave aleatória


Go to solution Solved by apocsantos,

Recommended Posts

Posted

Olá amigos poderiam me dar algumas dicas de como posso criar um simples app que gere chaves aleatórias com este formato?

"XX1-X2X-3XX", "XX4-X4X-4XX", etc

So pretendia gerar com números e letras maiúsculas.

Obrigado

  • Solution
Posted

Boa tarde,

Existem imensas formas de fazer isso, de forma mais complexa ou mais simples, evitando colisões e padrões ou não evitando. Partindo do principio que queres algo simples e para não estar a colocar aqui umas quantas paginas de código e 3 classes, cá fica um exemplo simples

 

 public static char GetLetter()
        {
            string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            Random rand = new Random();
            int num = rand.Next(0, chars.Length - 1);
            return chars[num];
        }

        public static char GetDigit()
        {
            string chars = "0123456789";
            Random rand = new Random();
            int num = rand.Next(0, chars.Length - 1);
            return chars[num];
        }

        private string geraChave()
        {
            string key = "" + GetLetter() + GetLetter() + GetDigit() + "-" + GetLetter() + GetDigit() + GetLetter() +
                         "-"
                         + GetDigit() + GetLetter() + GetLetter() + "";
            return key;
        }

 

Como é obvio este exemplo não é nada bom, pois o padrão é estupidamente repetitivo e demasiado fácil de detectar, mas fica apenas para o efeito de exemplo.

Não será difícil alterar e evitar a repetição de caracteres.

Cordiais cumprimentos,

 

Apocsantos

  • Vote 1

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted

Boas amigo,

Realmente funciona bem porem ele so muda as letras e números na ordem em que esta o meu exemplo, eu queria algo aleatório tipo

"@@@-@@@-@@@", "@@@-@@@-@@@", etc

Onde esta o @ gostava que ele gera-se números e letras aleatórias e salva-se num documento de texto "Tipo wordlist"

De qualquer forma muito obrigado pela tua ajuda.

Comprimentos

Posted

Tão simples como acrescentares os números na cadeia, e chamar um único método em vez de distinguires letras e números.

Com o exemplo que o apocsantos deixou, esta conclusão deveria ser trivial... basta olhar para o código.

  • Vote 1

Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Posted

Boa tarde,

Não encares o facto de deixar a solução, como um habito, pois mais importante do que ter um peixe, é saber pescar.

 

 private static Random random = new Random((int)DateTime.Now.Ticks);

        private string RandomString(int size)
        {
            StringBuilder builder = new StringBuilder();
            char ch;
            for (int i = 0; i < size; i++)
            {
                ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65))); //Oh relógio meu relógio, as horas não deixam de passar!
                builder.Append(ch);
            }

            return builder.ToString();
        }

        private Random domran = new Random();
        private int randomNumber = random.Next(0, 10);

        private void button1_Click(object sender, EventArgs e)
        {
            string modrar1 = RandomString(2);
            string domranNum1 = random.Next(0, 10).ToString();

            string modnar2 = RandomString(2);
            string domranNum2 = random.Next(0, 10).ToString();

            string modnar3 = RandomString(2);
            string domranNum3 = random.Next(0, 10).ToString();

            string key = modrar1 + domranNum1 + "-" + modnar2 + domranNum2 + "-" + modnar3 + domranNum3;

            textBox1.Text = key;
        }

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted

Boa noite,

Cá fica outra solução baseada na primeira solução:

public static char GetLetter()
        {
            string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            Random rand = new Random();
            int num = rand.Next(0, chars.Length - 1);
            return chars[num];
        }
      
        private string geraChave()
        {
            string key = "" + GetLetter() + GetLetter() + GetLetter() + "-" + GetLetter() + GetLetter() + GetLetter() +
                         "-"
                         + GetLetter() + GetLetter() + GetLetter() + "";
            return key;
        }

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.