Gerar strings alfanuméricas aleatórias em C#

Muhammad Maisam Abbas 16 fevereiro 2024
  1. Gere strings alfanuméricas aleatórias com a classe Random em C#
  2. Gere strings alfanuméricas aleatórias com o método LINQ em C#
  3. Gere strings alfanuméricas aleatórias com a classe RNGCryptoServiceProvider em C#
Gerar strings alfanuméricas aleatórias em C#

Este tutorial discutirá os métodos para gerar uma string alfanumérica aleatória em C#.

Gere strings alfanuméricas aleatórias com a classe Random em C#

A classe Random gera números aleatórios em C#. O método Random.Next() gera um valor inteiro aleatório. Podemos declarar uma variável string constante contendo todos os caracteres alfanuméricos e escolher caracteres da variável string com base no índice gerado pelo método Random.Next().

O exemplo de código a seguir nos mostra como gerar uma string alfanumérica aleatória com a classe Random em C#.

using System;
using System.Linq;

namespace random_alphanumeric_strings {
  class Program {
    static void Main(string[] args) {
      var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
      var Charsarr = new char[8];
      var random = new Random();

      for (int i = 0; i < Charsarr.Length; i++) {
        Charsarr[i] = characters[random.Next(characters.Length)];
      }

      var resultString = new String(Charsarr);
      Console.WriteLine(resultString);
    }
  }
}

Resultado:

vL8M6BNr

Geramos uma string alfanumérica aleatória de 8 caracteres com a classe Random em C#. Em seguida, inicializamos a string characters contendo todos os caracteres alfanuméricos desejados. Criamos a matriz de caracteres Charsarr com um comprimento de 8 caracteres. Em seguida, inicializamos uma instância da classe Random random. Nós iteramos através do array Charsarr e salvamos o caractere em um índice aleatório da string characters em Charsarr a cada vez. Em seguida, convertemos a matriz de caracteres Charsarr para a variável de string resultString e exibimos o resultado.

Gere strings alfanuméricas aleatórias com o método LINQ em C#

O LINQ executa a funcionalidade de consulta em estruturas de dados em C#. Podemos usar o LINQ com a classe Random para melhorar o desempenho do método anterior. O exemplo de código a seguir nos mostra como gerar uma string alfanumérica aleatória com o método LINQ em C#.

using System;
using System.Linq;

namespace random_alphanumeric_strings {
  class Program {
    private static Random random = new Random();
    public static string method2(int length) {
      const string characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
      return new string(
          Enumerable.Repeat(characters, length).Select(s => s[random.Next(s.Length)]).ToArray());
    }
    static void Main(string[] args) {
      string finalString = method2(8);
      Console.WriteLine(finalString);
    }
  }
}

Resultado:

SXUXK2P8

Criamos uma string alfanumérica aleatória com LINQ e a classe Random em C# no código acima. Este método é mais eficiente do que o método discutido acima.

Gere strings alfanuméricas aleatórias com a classe RNGCryptoServiceProvider em C#

Os métodos discutidos acima não são recomendados para gerar senhas porque eles não são realmente aleatórios e seguem um padrão linear. Para senhas seguras, a classe RNGCryptoServiceProvider deve ser utilizada. A classe RNGCryptoServiceProvider gera números aleatórios criptográficos em C#. O método GetBytes() da classe RNGCryptoServiceProvider preenche um array de bytes com valores aleatórios. Podemos usar o método GetBytes() com o método Convert.ToBase64String() para obter uma string do array de bytes preenchida. O exemplo de código a seguir nos mostra como gerar uma string alfanumérica aleatória segura com a classe RNGCryptoServiceProvider em C#.

using System;
using System.Linq;
using System.Security.Cryptography;

namespace random_alphanumeric_strings {
  class Program {
    static string method3(int length) {
      using (var crypto = new RNGCryptoServiceProvider()) {
        var bits = (length * 6);
        var byte_size = ((bits + 7) / 8);
        var bytesarray = new byte[byte_size];
        crypto.GetBytes(bytesarray);
        return Convert.ToBase64String(bytesarray);
      }
    }
    static void Main(string[] args) {
      string finalString = method3(8);
      Console.WriteLine(finalString);
    }
  }
}

Resultado:

JGc42Ug3

Geramos uma string alfanumérica aleatória segura com 8 caracteres com a classe RNGCryptoServiceProvider em C# no código acima. Este método é recomendado se quisermos gerar senhas aleatórias porque é relativamente seguro e imprevisível do que os dois métodos anteriores.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artigo relacionado - Csharp String