En este artículo, exploraremos el módulo criptográfico y cuáles son sus usos en Node.js. NodeJS admite una gran cantidad de módulos de terceros. Estos módulos se pueden utilizar para realizar diferentes tipos de tareas. El módulo Crypto también es un módulo de terceros que se puede importar y usar en NodeJS. Este módulo se puede utilizar para cifrar, descifrar o codificar cualquier tipo de datos. Este cifrado y descifrado básicamente ayudan a proteger y agregar una capa de autenticación a los datos. El principal caso de uso del módulo criptográfico es convertir el texto legible sin formato a un formato cifrado y descifrarlo cuando sea necesario.
Crypto y ByCrypto son los dos módulos de terceros diferentes que se pueden utilizar para la protección de datos confidenciales. La principal diferencia entre Crypto y ByCrypto es que ByCrypto proporciona un hash más potente que el módulo Crypto.
El texto sin formato está en formato legible por humanos y generalmente consta de alfabeto y palabras. Después de cifrar este texto con el módulo Crypto, se cambiará a un formato legible por computadora. Por ejemplo: algo como esto: sdfasc1asT67W2sqWwsdfsadf
Mecanismo de criptografía:
Hashing: en este mecanismo, una serie de texto sin formato se convierte básicamente en texto cifrado. Este es un algoritmo criptográfico unidireccional ya que no podemos volver a convertir este texto cifrado en texto sin formato. Este método se usa básicamente durante la autenticación del usuario de los Sistemas al proporcionar contraseñas confidenciales. Dado que las contraseñas no se pueden almacenar, estos textos cifrados se almacenarán en su lugar. Algunos algoritmos hash populares son: Message Digest 5 (MD5), RSA, SHA, etc. son algoritmos ampliamente utilizados para hash.
Cifrado y descifrado: en este mecanismo, una serie de texto sin formato se convierte en texto cifrado con la ayuda de una clave secreta y luego se descifra con la misma clave. El texto cifrado no se puede convertir al texto original sin una clave secreta. Este algoritmo toma la entrada de texto encriptado y la clave secreta que devolverá el texto original como salida. Este mecanismo se utiliza principalmente en los sistemas de mensajería para evitar que la red tenga cualquier tipo de fuga de datos. Algunos mecanismos populares son AES, DES, etc.
Características:
- Fácil de usar
- Algoritmos ampliamente utilizados con múltiples opciones para cifrar y descifrar
- Código más limpio y consistente
- Se puede integrar fácilmente con código Javascript en NodeJS
Módulo de instalación:
npm install crypto-js --save
Ejemplo 1: uso de SHA256 desde el módulo crypto-js.
Javascript
// Importing module var SHA256 = require("crypto-js/sha256"); // Initializing the original data var originalData = "Welcome To GeeksForGeeks" // Hashing the Original data var hasheddata = SHA256(originalData).toString() // Printing hashed data console.log("Hashed Data is: " + hasheddata)
Producción:
Hashed Data is: ecf0cc86124bb4191a1a10f48b1eb2a7b3b3c7aa8c38ac8de8ad6c0a1502b985
Ejemplo 2: uso del módulo criptográfico para el cifrado y descifrado de los datos. Podemos usar una sola clave para el cifrado y luego usar la misma clave para el descifrado también.
Javascript
// Importing the crypto module const crypto=require("crypto-js") // Initializing the original data var data = "This is the data that need to be encrypted" // Defining the secret key var key = "pwd@1234" // Encrypting the data using the password key var encrypted = crypto.AES.encrypt(data, key).toString(); console.log("Encrypted data -- ") // Printing the encrypted data console.log(encrypted) console.log("Decrypted data -- ") // Decrypting the data using the same password key var decrypted = crypto.AES.decrypt(encrypted, key) .toString(crypto.enc.Utf8) console.log(decrypted)
Producción:
Referencia: https://www.npmjs.com/package/crypto-js