Comment générer une chaîne aléatoire en ruby

Créé le 09 Dec 2022 - Mis à jour le 04 Jul 2023 - Créé par Fabien Berthoux - rubyrandom

Générer une chaîne aléatoire en Ruby est un moyen simple de sécuriser des mots de passe et de données sensibles. C'est également un moyen utile de créer des chaînes aléatoires qui peuvent être utilisées pour des applications telles que des codes promo, des numéros de série, des clés d'activation et plus encore. En Ruby, il existe plusieurs méthodes pour générer des chaînes aléatoires.

La méthode la plus simple consiste à utiliser la fonction SecureRandom.random_bytes. Cette méthode prend en entrée un entier qui spécifie le nombre d'octets à retourner et retourne une chaîne aléatoire d'octets. Vous pouvez ensuite utiliser la méthode String#unpack pour convertir ces octets en une chaîne alphanumérique. Par exemple, le code suivant génère une chaîne aléatoire de 20 caractères :

require 'securerandom'

SecureRandom.random_bytes(20).unpack('H*')[0]
# => "d1c7b279dbc9f9b8e14e2c2d07e2d888eac8b1c4"

Comment générer une chaîne aléatoire d'une longueur spécifique ?


Si vous souhaitez générer une chaîne aléatoire d'une longueur spécifique, vous pouvez utiliser la méthode SecureRandom.hex. Cette méthode prend en entrée un entier qui spécifie la longueur de la chaîne aléatoire à retourner et retourne une chaîne aléatoire de caractères hexadécimaux. Par exemple, le code suivant génère une chaîne aléatoire de 8 caractères :

require 'securerandom'

SecureRandom.hex(8)
# => "419f7f45"

Comment générer une chaîne aléatoire avec des caractères spécifiques ?


Si vous souhaitez générer une chaîne aléatoire contenant uniquement des caractères spécifiques, vous pouvez utiliser la méthode SecureRandom.base64. Cette méthode prend en entrée un entier qui spécifie la longueur de la chaîne aléatoire à retourner et retourne une chaîne aléatoire de caractères base64. Par exemple, le code suivant génère une chaîne aléatoire de 8 caractères composée uniquement de lettres et de chiffres :

require 'securerandom'

SecureRandom.base64(8)
# => "6mZK/1Kd"

Comment générer un mot de passe aléatoire ?


Pour générer un mot de passe aléatoire, vous pouvez utiliser la méthode SecureRandom.urlsafe_base64. Cette méthode prend en entrée un entier qui spécifie la longueur de la chaîne aléatoire à retourner et retourne une chaîne aléatoire de caractères base64 plus sécurisée. Par exemple, le code suivant génère un mot de passe aléatoire de 10 caractères composé de lettres, de chiffres et de caractères spéciaux :

require 'securerandom'

SecureRandom.urlsafe_base64(10)
# => "7cE_a-_i8!"

Comment générer une chaîne aléatoire avec des caractères spécifiques ?


Si vous souhaitez générer une chaîne aléatoire contenant uniquement un ensemble spécifique de caractères, vous pouvez utiliser la méthode Array#sample. Cette méthode prend en entrée un tableau et retourne un élément aléatoire du tableau. Par exemple, le code suivant génère une chaîne aléatoire de 8 caractères composée uniquement de lettres minuscules :

('a'..'z').to_a.sample(8).join
# => "mfkxjxdm"