Genera stringhe alfanumeriche casuali in C#

Muhammad Maisam Abbas 16 febbraio 2024
  1. Genera stringhe alfanumeriche casuali con la classe Random in C#
  2. Genera stringhe alfanumeriche casuali con il metodo LINQ in C#
  3. Genera stringhe alfanumeriche casuali con la classe RNGCryptoServiceProvider in C#
Genera stringhe alfanumeriche casuali in C#

Questo tutorial discuterà i metodi per generare una stringa alfanumerica casuale in C#.

Genera stringhe alfanumeriche casuali con la classe Random in C#

La classe Random genera numeri casuali in C#. Il metodo Random.Next() genera un valore intero casuale. Possiamo dichiarare una variabile stringa costante contenente tutti i caratteri alfanumerici e scegliere i caratteri dalla variabile stringa in base all’indice generato dal metodo Random.Next().

Il seguente esempio di codice ci mostra come generare una stringa alfanumerica casuale con la classe Random in 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);
    }
  }
}

Produzione:

vL8M6BNr

Abbiamo generato una stringa alfanumerica casuale di 8 caratteri con la classe Random in C#. Quindi abbiamo inizializzato la stringa characters contenente tutti i caratteri alfanumerici desiderati. Abbiamo creato la matrice di caratteri Charsarr con una lunghezza di 8 caratteri. Abbiamo quindi inizializzato un’istanza della classe Random random. Abbiamo iterato attraverso l’array Charsarr e salvato il carattere in un indice casuale dalla stringa caratteri in Charsarr ogni volta. Abbiamo quindi convertito l’array di caratteri Charsarr nella variabile stringa resultString e visualizzato il risultato.

Genera stringhe alfanumeriche casuali con il metodo LINQ in C#

LINQ esegue la funzionalità di query sulle strutture di dati in C#. Possiamo usare LINQ con la classe Random per migliorare le prestazioni del metodo precedente. L’esempio di codice seguente mostra come generare una stringa alfanumerica casuale con il metodo LINQ in 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);
    }
  }
}

Produzione:

SXUXK2P8

Abbiamo creato una stringa alfanumerica casuale con LINQ e la classe Random in C# nel codice sopra. Questo metodo è più efficiente del metodo discusso sopra.

Genera stringhe alfanumeriche casuali con la classe RNGCryptoServiceProvider in C#

I metodi discussi sopra non sono consigliati per la generazione di password perché non sono realmente casuali e seguono uno schema lineare. Per password sicure, dovrebbe essere utilizzata la classe RNGCryptoServiceProvider. La classe RNGCryptoServiceProvider genera numeri casuali crittografici in C#. Il metodo GetBytes() della classe RNGCryptoServiceProvider riempie un array di byte con valori casuali. Possiamo usare il metodo GetBytes() con il metodo Convert.ToBase64String() per ottenere una stringa dall’array di byte riempiti. Il seguente esempio di codice ci mostra come generare una stringa alfanumerica casuale sicura con la classe RNGCryptoServiceProvider in 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);
    }
  }
}

Produzione:

JGc42Ug3

Abbiamo generato una stringa alfanumerica casuale sicura con 8 caratteri con la classe RNGCryptoServiceProvider in C# nel codice precedente. Questo metodo è consigliato se vogliamo generare password casuali perché è relativamente sicuro e imprevedibile rispetto ai due metodi precedenti.

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

Articolo correlato - Csharp String