Un guide du module de cryptographie Node.js
Le module de chiffrement Node.js rationalise le processus d'exécution des opérations cryptographiques. Voici comment l'utiliser.
La cryptographie est la pratique consistant à sécuriser les communications et les données en les convertissant dans des formats que seules les parties autorisées peuvent déchiffrer.
Le module crypto de Node.js est un module intégré qui fournit des fonctionnalités cryptographiques aux applications Node.js. Il offre une gamme de fonctionnalités cryptographiques, notamment le cryptage, le déchiffrement, le hachage, les signatures numériques, la génération sécurisée de nombres aléatoires, etc.
Vous explorerez ici les différentes applications du module de cryptographie Node.js et comment vous pouvez les utiliser pour sécuriser vos applications.
Hachage
Le hachage est une technique cryptographique unidirectionnelle que vous pouvez utiliser pour transformer une clé ou une chaîne donnée en une sortie de taille fixe appelée hachage ou résumé.
Le hachage est une fonction à sens unique, ce qui signifie que lorsque vous hachez une clé ou une chaîne, vous ne pouvez pas obtenir la valeur d'origine du hachage généré.
Le module de chiffrement Node.js prend en charge diverses fonctions de hachage telles que SHA-256, SHA-512, MD5, etc.
Vous pouvez hacher des données à l'aide de createHash du module de chiffrement. , qui prend l'algorithme de hachage comme argument. La méthode renvoie un objet Hash, que vous pouvez utiliser pour hacher les données à l'aide de la mise à jour. et digest méthodes.
Par exemple:
const crypto = require('crypto');
const data = "password";
// creating hash objectconst hashAlgo = crypto.createHash('sha256')
// passing the data to be hashedhashAlgo.update(data);
// Creating the hash in the required formatconst hash = hashAlgo.digest('hex');
console.log(`Hash: ${hash}`); Dans l'exemple ci-dessus, createHash du module crypto. a créé un objet de hachage avec le sha256. La mise à jour La méthode sur l'objet de hachage prend les données d'entrée et les hache. Ensuite, la méthode digest prend un paramètre d'encodage, spécifiant le format de la valeur de hachage de sortie, et renvoie le hachage au format spécifié (hex).
Le hachage est utile pour vérifier l'intégrité des données, le stockage des mots de passe, les signatures numériques, etc.
Générer des données aléatoires
Des données aléatoires cryptographiquement sécurisées sont souvent requises dans la cryptographie, les jeux et les tests pour divers cas d'utilisation.
En cryptographie, vous pouvez utiliser des données aléatoires pour générer des clés, des sels et des vecteurs d'initialisation pour les algorithmes de chiffrement et de déchiffrement.
Dans les jeux, vous pouvez utiliser des données aléatoires pour générer des niveaux de jeu, des personnages, des objets et bien plus encore afin d'éviter la triche et de vous assurer que le jeu n'est pas prévisible.
Lors des tests, vous pouvez l'utiliser pour simuler des scénarios du monde réel et des cas extrêmes.
Vous pouvez générer des données aléatoires à l'aide des randomBytes< du module de chiffrement Node.js. Méthode. Cette méthode prend un nombre comme argument et renvoie un tampon d'octets aléatoires.
Ce nombre représente la taille des octets que la méthode générera. Cependant, le nombre ne doit pas être supérieur à 2³¹ - 1 (2147483647), qui est la valeur maximale pouvant être représentée par un entier signé de 32 bits.
Par exemple:
const crypto = require("crypto");
// create random bytesconst randomBytes = crypto.randomBytes(32);
// convert to hexconst randomString = randomBytes.toString("hex");
console.log(randomString); //logs random string to the console Le bloc de code ci-dessus génère et enregistre une chaîne aléatoire de 64 caractères hexadécimaux (32 octets) sur la console.
La génération de données aléatoires cryptographiquement sécurisées est importante car elle garantit que les données aléatoires ne sont pas prévisibles et que les attaquants ne peuvent pas les manipuler ou les deviner.
Chiffrement et déchiffrement dans Node.js
Le cryptage est le processus de transformation d'un texte brut en une forme illisible (texte chiffré) à l'aide d'un algorithme de cryptage et d'une clé secrète.
Le décryptage est l'inverse du cryptage. Il s'agit du processus de reconversion du texte chiffré en texte brut en utilisant le même algorithme de cryptage et la même clé.
Le module de chiffrement Node.js prend en charge divers algorithmes de chiffrement et de déchiffrement, notamment AES (Advanced Encryption Standard), DES (Data Encryption Standard) et RSA (Rivest-Shamir-Adleman).
Comment chiffrer des données dans Node.js à l'aide du module crypto
Vous pouvez chiffrer les données à l'aide de la méthode crypto.createCipheriv(), qui prend l'algorithme de chiffrement, la clé secrète et un vecteur d'initialisation en entrée. La clé secrète dépend de l'algorithme de cryptage que vous utilisez. Par exemple, pour l'algorithme aes-256 en mode CBC, la longueur de la clé doit être de 32 octets.
La méthode renvoie un objet Cipher, que vous pouvez utiliser pour chiffrer les données à l'aide des méthodes update() et final(). Les données chiffrées sont généralement représentées sous forme de chaîne hexadécimale ou de tampon.
Par exemple:
const crypto = require("crypto");
// Generate a secret key for encryption and decryption.const secretKey = crypto.randomBytes(32);
// Generate an initialization vectorconst iv = crypto.randomBytes(16);
// data to be encryptedconst plainText = "This is a secret message";
// create cipher objectconst cipher = crypto.createCipheriv("aes-256-cbc", secretKey, iv);
// encrypt the datalet encryptedText = cipher.update(plainText, "utf-8", "hex");
// finalize the encryptionencryptedText += cipher.final("hex");
console.log(encryptedText); L'exemple ci-dessus montre comment chiffrer du texte brut à l'aide de aes-256 en mode CBC à l'aide du module crypto. Il génère une clé secrète et un vecteur d'initialisation à l'aide de la méthode crypto.randomBytes. Crée ensuite un objet de chiffrement à l'aide de la méthode crypto.createCipheriv et chiffre le message en texte brut à l'aide des méthodes cipher.update et cipher.final.
Le résultat est une chaîne hexadécimale du message chiffré, que vous pouvez déchiffrer en utilisant la même clé secrète et IV.
Comment décrypter des données dans Node.js à l'aide du module crypto
Vous pouvez déchiffrer les données cryptées à l'aide de la méthode crypto.createDecipheriv() du module de chiffrement, qui prend en entrée l'algorithme de décryptage, la clé secrète et un vecteur d'initialisation. La méthode renvoie un objet Decipher, que vous pouvez utiliser pour déchiffrer les données à l'aide des méthodes Decipher.update() et Decipher.final(). .
Par exemple:
// create Decipher objectconst decipher = crypto.createDecipheriv("aes-256-cbc", secretKey, iv);
// decrypt the datalet decryptedText = decipher.update(encryptedText, "hex", "utf-8");
// finalize the decryptiondecryptedText += decipher.final("utf-8");
console.log(decryptedText); // This is a secret message L'exemple ci-dessus montre comment vous pouvez déchiffrer des données chiffrées en utilisant le même algorithme, la même clé secrète et le même vecteur d'initialisation avec lesquels vous les avez chiffrées.
Il crée un objet Decipher à l'aide de la méthode crypto.createDecipheriv. Ensuite, il déchiffre les données à l'aide de la méthode decipher.update, qui prend les données, le codage d'entrée et le codage de sortie comme arguments. Enfin, il termine le processus de décryptage en utilisant le decipher.final méthode . L’appel de cette méthode garantit que l’objet Decipher ne peut plus être utilisé pour déchiffrer les données. Le résultat est une chaîne de texte brut.
Le cryptage et le décryptage sont cruciaux pour protéger les données sensibles et maintenir leur confidentialité. Ils ont diverses applications concrètes dans les domaines du commerce électronique, des services bancaires en ligne, du stockage de données, etc.
Autres applications du module crypto Node.js
Outre le hachage, la génération de données aléatoires cryptographiquement sécurisées, ainsi que le cryptage et le déchiffrement, vous pouvez également utiliser le module de cryptage Node.js pour signer et vérifier les signatures numériques, ce qui permet de vérifier l'authenticité et l'intégrité des documents numériques. De plus, vous pouvez utiliser le module de chiffrement pour sécuriser les flux pour la transmission de données afin d'empêcher la falsification et l'écoute clandestine des données pendant la transmission.
