Generación de Números Aleatorios con Node.js

Clase 6 de 25Curso de Fundamentos de Criptografía

Resumen

¿Cómo iniciar un proyecto para generar aleatoriedad?

En el mundo de la programación, la aleatoriedad es una herramienta fundamental para diversos sistemas criptográficos y prácticas avanzadas. Aquí te guiaré paso a paso sobre cómo crear una función de generación de números pseudoaleatorios usando Node.js. Si usas otro lenguaje de programación, puedes optar por las librerías estándar que ofrezca. La mayoría de estos lenguajes tienen librerías que te permiten trabajar con estos algoritmos de generación de números aleatorios.

¿Cómo configurar la línea de comandos en el proyecto?

Lo primero que harás será configurar y añadir un nuevo comando en nuestra línea de comandos preconfigurada. Este comando se llamará prng, que significa "pseudo random number generation". Este nombre es común en diversas fuentes. A continuación, añadimos una pequeña descripción:

const argv = require('yargs/yargs')(process.argv.slice(2))
  .command('prng', 'Generar un número aleatorio', () => {}, (argv) => {})
  .argv;

Este código base te permitirá expandir las funcionalidades según sea necesario.

¿Qué opciones podemos configurar en el builder?

En el builder configuraremos las opciones para personalizar la generación de números:

  1. Tipo de aleatoriedad: Definiremos tres elecciones principales:

    • bytes
    • enteros
    • Identificadores UUID
  2. Tamaño: Parámetro esencial para determinar la longitud de nuestra clave criptográfica. Generalmente, un tamaño por defecto de 16 bytes es suficiente.

  3. Número máximo y mínimo: Aplicado únicamente para enteros, permite delimitar el rango de los números generados.

  4. Codificación (encoding): Determina cómo se presentará el resultado en pantalla. Las opciones están predefinidas y puedes dejarlas en un archivo de configuración para mantener tu código limpio. El valor por defecto es hexadecimal, ya que es uno de los formatos más manejables para este tipo de proyectos.

¿Cómo implementar la función generadora de números pseudoaleatorios?

Para empezar, crearemos una carpeta nueva con un archivo para implementar la funcionalidad. Asegúrate de tener la librería crypto de Node.js, la cual se incluye de manera nativa:

const crypto = require('crypto');

function generadorDeNumerosPseudoaleatorios(tipo, size, min, max, encoding) {
  switch (tipo) {
    case 'bytes':
      return crypto.randomBytes(size).toString(encoding);
    case 'enteros':
      return crypto.randomInt(min, max).toString();
    case 'uuid':
      return crypto.randomUUID();
    default:
      return null;
  }
}

En esta función se captura el tipo de aleatoriedad deseado y se procesa de acuerdo a las opciones de bytes, enteros o uuid.

¿Cómo manejar errores y resultados en la línea de comandos?

Finalmente, exporta la función y llámala desde tu línea de comandos. Asegúrate de extraer y pasar los parámetros correctamente:

console.log(generadorDeNumerosPseudoaleatorios(tipo, tamaño, mínimo, máximo, encoding));

Realiza las pruebas necesarias y verifica que los números se generan según lo esperado. También será útil documentar cuáles opciones son necesarias para determinados tipos de generación, como los parámetros min y max solo aplicables a enteros.

¿Qué puedes hacer ahora?

Con esta configuración puedes generar números aleatorios no solo para proyectos personales, sino también en entornos de trabajo donde se requieran números o claves secretas. ¡Experimenta probando diferentes valores de entrada y amplía las capacidades de tu proyecto! Si tienes nuevas ideas para mejorar el generador, sería maravilloso que las compartas con tus compañeros o las implementes en tus propios proyectos.