Le module de chiffrement Node.js rationalise le processus d'exécution des opérations de chiffrement. 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 Node.js crypto module est un module intégré qui fournit des fonctionnalités cryptographiques aux applications Node.js. Il offre une gamme de capacités cryptographiques, notamment le cryptage, le décryptage, le hachage, les signatures numériques, la génération sécurisée de nombres aléatoires, etc.
Ici, vous explorerez les différentes applications du module de chiffrement Node.js et comment vous pouvez les utiliser pour sécuriser vos applications.
Hachage
Le hachage est une technique cryptographique à sens unique que vous pouvez utiliser pour transformer une clé ou une chaîne donnée en une sortie de taille fixe appelée hachage ou condensé.
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 à partir 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 du module de chiffrement créerHash méthode, qui prend l'algorithme de hachage comme argument. La méthode retourne un Hacher objet, que vous pouvez utiliser pour hacher les données à l'aide de l'objet mise à jour et digérer méthodes.
Par exemple:
constante crypto = exiger('crypto');
constante données = "mot de passe";
// création d'un objet de hachage
constante hashAlgo = crypto.createHash('sha256')// passage des données à hacher
hashAlgo.update (données);// Création du hash au format requis
constante hachage = hashAlgo.digest('hexagone');
console.enregistrer(`Hachage: ${hachage}`);
Dans l'exemple ci-dessus, le module crypto créerHash créé un objet de hachage avec le sha256 algorithme de hachage. Le mise à jour La méthode sur l'objet de hachage prend les données d'entrée et les hache. Puis le digérer La méthode prend un paramètre d'encodage, spécifiant le format de valeur de hachage de sortie, et renvoie le hachage dans le format spécifié (hexagone).
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ération de données aléatoires
Des données aléatoires cryptographiquement sécurisées sont souvent nécessaires 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, etc., afin d'empêcher 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 réels et des cas extrêmes.
Vous pouvez générer des données aléatoires à l'aide du module de chiffrement Node.js randomBytes 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 va générer. Toutefois, 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é 32 bits.
Par exemple:
constante crypto = exiger("crypto");
// crée des octets aléatoires
constante randomBytes = crypto.randomBytes(32);// convertir en hexadécimal
constante randomString = randomBytes.toString("hexagone");
console.log (chaîne aléatoire); //enregistre une chaîne aléatoire dans la console
Le bloc de code ci-dessus génère et consigne une chaîne aléatoire de 64 caractères hexadécimaux (32 octets) dans 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 du texte brut en une forme illisible (texte chiffré) à l'aide d'un algorithme de chiffrement 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 chiffrement et la même clé.
Le module de chiffrement Node.js prend en charge divers algorithmes de chiffrement et de déchiffrement, y compris 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 crypter les données à l'aide de crypto.createCipheriv() méthode, 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 chiffrement que vous utilisez. Par exemple, pour l'algorithme aes-256 dans Radio-Canada mode, la longueur de la clé doit être de 32 octets.
La méthode retourne un Chiffrer objet, que vous pouvez utiliser pour chiffrer les données à l'aide de mise à jour() et final() méthodes. Les données chiffrées sont généralement représentées sous la forme d'une chaîne hexadécimale ou d'un tampon.
Par exemple:
constante crypto = exiger("crypto");
// Génère une clé secrète pour le chiffrement et le déchiffrement.
constante clé secrète = crypto.randomBytes(32);// Génère un vecteur d'initialisation
constante iv = crypto.randomBytes(16);// données à chiffrer
constante plainText = "Ceci est un message secret";// crée un objet chiffré
constante chiffrement = crypto.createCipheriv("aes-256-cbc", clé secrète, iv);// chiffre les données
laisser texte crypté = cipher.update (texte clair, "utf-8", "hexagone");// finaliser le chiffrement
textecrypté += cipher.final("hexagone");
console.log (texte crypté);
L'exemple ci-dessus montre comment vous pouvez chiffrer du texte brut à l'aide d'aes-256 en mode CBC à l'aide du module crypto. Il génère une clé secrète et un vecteur d'initialisation en utilisant le crypto.randomBytes méthode. Crée ensuite un objet de chiffrement à l'aide de la crypto.createCipheriv et crypte le message en texte brut à l'aide de la cipher.update et chiffrement.final méthodes.
Le résultat est une chaîne hexadécimale du message crypté, que vous pouvez décrypter en utilisant la même clé secrète et le même IV.
Comment décrypter des données dans Node.js à l'aide du module crypto
Vous pouvez décrypter les données cryptées à l'aide des fonctions du module de cryptage. crypto.createDecipheriv() méthode, qui prend l'algorithme de déchiffrement, la clé secrète et un vecteur d'initialisation en entrée. La méthode retourne un Déchiffrer objet, que vous pouvez utiliser pour déchiffrer les données à l'aide de Déchiffrer.update() et Déchiffrer.final() méthodes.
Par exemple:
// crée un objet Déchiffrer
constante déchiffrer = crypto.createDecipheriv("aes-256-cbc", clé secrète, iv);// déchiffre les données
laisser decryptedText = decipher.update (encryptedText, "hexagone", "utf-8");// finaliser le déchiffrement
texte décrypté += déchiffrer.final("utf-8");
console.log (texte décrypté); // Ceci est un message secret
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 en utilisant le crypto.createDecipheriv méthode. Ensuite, il déchiffre les données à l'aide de la déchiffrer.mettre à jour, qui prend les données, l'encodage d'entrée et l'encodage de sortie comme arguments. Enfin, il termine le processus de décryptage en utilisant le déchiffrer.final méthode. L'appel de cette méthode garantit que l'objet Decipher peut plus être utilisé pour déchiffrer les données. Le résultat est une chaîne de texte brut.
Le chiffrement et le déchiffrement sont cruciaux pour protéger les données sensibles et maintenir leur confidentialité. Ils ont diverses applications du monde réel dans le commerce électronique, les services bancaires en ligne, le 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écryptage, vous pouvez également utiliser le Module de chiffrement Node.js pour signer et vérifier les signatures numériques, ce qui aide à vérifier l'authenticité et l'intégrité du numérique documents. De plus, vous pouvez utiliser le module de chiffrement pour sécuriser les flux de transmission de données afin d'empêcher la falsification des données et l'écoute clandestine pendant la transmission.