El módulo criptográfico de Node.js agiliza el proceso de realizar operaciones criptográficas. Aquí se explica cómo usarlo.
La criptografía es la práctica de asegurar la comunicación y los datos convirtiéndolos en formatos que solo las partes autorizadas pueden descifrar.
El nodo.js cripto module es un módulo integrado que proporciona funcionalidad criptográfica a las aplicaciones de Node.js. Ofrece una gama de capacidades criptográficas, que incluyen cifrado, descifrado, hashing, firmas digitales, generación segura de números aleatorios y más.
Aquí explorará las diversas aplicaciones del módulo criptográfico de Node.js y cómo puede usarlas para proteger sus aplicaciones.
hash
Hashing es una técnica criptográfica unidireccional que puede usar para transformar una clave o cadena determinada en una salida de tamaño fijo conocida como hash o resumen.
Hashing es una función unidireccional, lo que significa que cuando hash una clave o cadena, no puedes obtener el valor original del hash generado.
El módulo criptográfico de Node.js admite varias funciones hash como SHA-256, SHA-512, MD5 y más.
Puede hacer hash de datos usando el módulo criptográfico crearHash método, que toma el algoritmo hash como argumento. El método devuelve un Picadillo objeto, que puede usar para codificar los datos usando el actualizar y digerir métodos.
Por ejemplo:
constante cripto = requerir('cripto');
constante datos = "contraseña";
// creando un objeto hash
constante hashAlgo = crypto.createHash('sha256')// pasando los datos para ser hash
hashAlgo.update (datos);// Creando el hash en el formato requerido
constante hash = hashAlgo.digest('maleficio');
consola.registro(Hachís: ${hash}`);
En el ejemplo anterior, el módulo criptográfico crearHash creó un objeto hash con el sha256 algoritmo hash. El actualizar El método en el objeto hash toma los datos de entrada y los procesa. Entonces el digerir El método toma un parámetro de codificación, que especifica el formato del valor hash de salida, y devuelve el hash en el formato especificado (maleficio).
Hashing es útil para verificar la integridad de los datos, el almacenamiento de contraseñas, las firmas digitales y más.
Generación de datos aleatorios
Los datos aleatorios criptográficamente seguros a menudo se requieren en criptografía, juegos y pruebas para varios casos de uso.
En criptografía, puede usar datos aleatorios para generar claves, sales y vectores de inicialización para algoritmos de cifrado y descifrado.
En los juegos, puede usar datos aleatorios para generar niveles de juego, personajes, elementos y más para evitar trampas y asegurarse de que el juego no sea predecible.
En las pruebas, puede usarlo para simular escenarios del mundo real y casos extremos.
Puede generar datos aleatorios utilizando el módulo criptográfico de Node.js bytes aleatorios método. Este método toma un número como argumento y devuelve un búfer de bytes aleatorios.
Este número representa el tamaño de los bytes que generará el método. Sin embargo, el número no debe ser mayor que 2³¹ - 1 (2147483647), que es el valor máximo que puede representar un entero de 32 bits con signo.
Por ejemplo:
constante cripto = requerir("cripto");
// crea bytes aleatorios
constante bytes aleatorios = crypto.bytes aleatorios (32);// convertir a hexadecimal
constante cadena aleatoria = bytes aleatorios.toString("maleficio");
consola.log (cadena aleatoria); // registra una cadena aleatoria en la consola
El bloque de código anterior genera y registra una cadena aleatoria de 64 caracteres hexadecimales (32 bytes) en la consola.
La generación de datos aleatorios criptográficamente seguros es importante porque garantiza que los datos aleatorios no sean predecibles y que los atacantes no puedan manipularlos ni adivinarlos.
Cifrado y descifrado en Node.js
El cifrado es el proceso de transformar texto sin formato en un formato ilegible (texto cifrado) utilizando un algoritmo de cifrado y una clave secreta.
El descifrado es lo contrario del cifrado. Es el proceso de convertir el texto cifrado nuevamente en texto sin formato utilizando el mismo algoritmo y clave de cifrado.
El módulo criptográfico de Node.js brinda soporte para varios algoritmos de cifrado y descifrado, incluyendo AES (Estándar de cifrado avanzado), DES (Estándar de cifrado de datos) y RSA (Rivest-Shamir-Adleman).
Cómo cifrar datos en Node.js usando el módulo criptográfico
Puede cifrar los datos utilizando el crypto.createCipheriv() método, que toma el algoritmo de cifrado, la clave secreta y un vector de inicialización como entrada. La clave secreta depende del algoritmo de cifrado que esté utilizando. por ejemplo, para el algoritmo aes-256 en CBC modo, la longitud de la clave debe ser de 32 bytes.
El método devuelve un Cifrar objeto, que puede utilizar para cifrar los datos utilizando el actualizar() y final() métodos. Los datos cifrados normalmente se representan como una cadena hexadecimal o un búfer.
Por ejemplo:
constante cripto = requerir("cripto");
// Generar una clave secreta para el cifrado y descifrado.
constante clavesecreta = crypto.randomBytes(32);// Generar un vector de inicialización
constante iv = cripto.bytes aleatorios(16);// datos a cifrar
constante texto sin formato = "Este es un mensaje secreto";// crea el objeto de cifrado
constante cifrado = crypto.createCipheriv("aes-256-cbc", clave secreta, iv);// cifrar los datos
dejar texto encriptado = cipher.update (texto sin formato, "utf-8", "maleficio");// finaliza el cifrado
textocifrado += cifrado.final("maleficio");
consola.log (texto cifrado);
El ejemplo anterior demuestra cómo puede cifrar texto sin formato usando aes-256 en modo CBC usando el módulo criptográfico. Genera una clave secreta y un vector de inicialización usando el crypto.randomBytes método. Luego crea un objeto de cifrado usando el crypto.createCipheriv y encripta el mensaje de texto sin formato usando el cifrado.actualizar y cifrado.final métodos.
El resultado es una cadena hexadecimal del mensaje cifrado, que puede descifrar utilizando la misma clave secreta y IV.
Cómo descifrar datos en Node.js usando el módulo crypto
Puede descifrar datos cifrados utilizando el módulo criptográfico. crypto.createDecipheriv() método, que toma el algoritmo de descifrado, la clave secreta y un vector de inicialización como entrada. El método devuelve un Descifrar objeto, que puede usar para descifrar los datos usando el Descifrar.actualizar() y Descifrar.final() métodos.
Por ejemplo:
// crea el objeto Descifrar
constante descifrar = crypto.createDecipheriv("aes-256-cbc", clave secreta, iv);// descifrar los datos
dejar decryptedText = descifrar.actualizar (encryptedText, "maleficio", "utf-8");// finaliza el descifrado
decryptedText += descifrar.final("utf-8");
consola.log (texto descifrado); // Este es un mensaje secreto
El ejemplo anterior demuestra cómo puede descifrar datos cifrados utilizando el mismo algoritmo, clave secreta y vector de inicialización con los que los cifró.
Crea un objeto Decipher usando el crypto.createDecipheriv método. Luego descifra los datos usando el descifrar.actualizar método, que toma los datos, la codificación de entrada y la codificación de salida como argumentos. Finalmente, finaliza el proceso de descifrado usando el descifrar.final método. Llamar a este método garantiza que el objeto Decipher ya se pueda usar para descifrar datos. El resultado es una cadena de texto sin formato.
El cifrado y el descifrado son cruciales para proteger los datos confidenciales y mantener su confidencialidad. Tienen varias aplicaciones del mundo real en comercio electrónico, banca en línea, almacenamiento de datos y más.
Otras aplicaciones del módulo criptográfico de Node.js
Además del hashing, la generación de datos aleatorios criptográficamente seguros y el cifrado y descifrado, también puede utilizar el Módulo criptográfico de Node.js para firmar y verificar firmas digitales, que ayudan a verificar la autenticidad e integridad de los datos digitales. documentos. Además, puede usar el módulo criptográfico para proteger las secuencias de transmisión de datos para evitar la manipulación y el espionaje de datos durante la transmisión.