ChiffreObjet
Objet algorithme de chiffrement symétrique
L'objet de chiffrement appartient àcryptomodule, créez :
1var c = new crypto.Cipher(crypto.AES, crypto.ECB, ...);
Ce qui suit prend AES comme exemple pour montrer comment utiliser les objets Cipher pour le chiffrement et le déchiffrement :
Tout d’abord, nous devons obtenir un objet Cipher chiffré symétriquement, tel que l’algorithme de chiffrement AES :
1
2
3const crypto = require('crypto');
const key = crypto.randomBytes(16); // generate a 16-byte random key
const cipher = new crypto.Cipher(crypto.AES, crypto.ECB, key);
Dans le code ci-dessus, nous randomBytes
avons généré un nombre aléatoire de 16 octets comme clé AES via la méthode. Ensuite, nous avons créé un objet Cipher de l’algorithme AES, en utilisant le mode de fonctionnement du chiffrement par bloc ECB et en utilisant le nombre aléatoire généré comme clé.
Ensuite, nous encrypt
chiffrons le texte brut à l'aide de la méthode de l'objet Cipher :
1
2
3const plaintext = 'Hello, world!';
const encrypted = cipher.encrypt(plaintext);
console.log(encrypted); // output encrypted data
Dans le code ci-dessus, nous utilisons encrypt
la méthode pour chiffrer la chaîne Hello, world!
et afficher le résultat chiffré.
Concernant le code ci-dessus, vous devez faire attention aux points suivants :
- Avant d'effectuer le chiffrement, vous devez créer un objet Cipher chiffré symétriquement et définir des paramètres tels que l'algorithme de chiffrement, le mot de passe et le mode de fonctionnement du chiffrement par bloc.
- Après avoir appelé la méthode de chiffrement, nous pouvons obtenir les données chiffrées, qui sont généralement unBufferobjet. Il convient de noter que la sortie est constituée de données binaires, qui doivent être imprimées selon la méthode correspondante, par exemple en utilisant
Hex
etc. pour la conversion.
Si nous voulons décrypter les données, nous avons également besoin d'un objet Cipher, qui est également basé sur l'algorithme AES et utilise le même mode de fonctionnement de chiffrement par clé et par bloc :
1
2
3const decipher = new crypto.Cipher(crypto.AES, crypto.ECB, key);
const decrypted = decipher.decrypt(encrypted);
console.log(decrypted.toString()); // output decrypted data
Ici, nous créons un nouvel objet Cipher, utilisons le même mode de fonctionnement de clé et de mot de passe et utilisons decrypt
la méthode pour déchiffrer les données cryptées. Le résultat du décryptage est unBufferL'objet doit être converti en chaîne pour être affiché correctement.
relation d'héritage
Constructeur
Cipher
Constructeur de chiffrement, utilisé uniquement pour l'initialisation d'ARC4
1
2new Cipher(Integer provider,
Buffer key);
Paramètres d'appel :
- provider: Entier, spécifiez l'algorithme de chiffrement
- key:Buffer, précisez le mot de passe de cryptage et de déchiffrement
Constructeur de chiffrement
1
2
3new Cipher(Integer provider,
Integer mode,
Buffer key);
Paramètres d'appel :
- provider: Entier, spécifiez l'algorithme de chiffrement
- mode: Entier, spécifie le mode de fonctionnement du chiffrement par bloc
- key:Buffer, précisez le mot de passe de cryptage et de déchiffrement
Constructeur de chiffrement
1
2
3
4new Cipher(Integer provider,
Integer mode,
Buffer key,
Buffer iv);
Paramètres d'appel :
- provider: Entier, spécifiez l'algorithme de chiffrement
- mode: Entier, spécifie le mode de fonctionnement du chiffrement par bloc
- key:Buffer, précisez le mot de passe de cryptage et de déchiffrement
- iv:Buffer, précisez le vecteur initial
propriétés des membres
name
String, renvoie le nom de l'algorithme actuel
1readonly String Cipher.name;
keySize
Entier, renvoie la longueur actuelle du mot de passe de l'algorithme en bits
1readonly Integer Cipher.keySize;
ivSize
Entier, renvoie la longueur initiale du vecteur de l'algorithme actuel, en octets
1readonly Integer Cipher.ivSize;
blockSize
Entier, renvoie la longueur actuelle du bloc de données de l'algorithme en octets
1readonly Integer Cipher.blockSize;
fonction membre
paddingMode
Utiliser le mode remplissage
1Cipher.paddingMode(Integer mode);
Paramètres d'appel :
- mode: Entier, spécifie le mode de remplissage, la valeur par défaut est PADDING_PKCS7
encrypt
Chiffrer les données à l'aide de l'algorithme de chiffrement actuel
1Buffer Cipher.encrypt(Buffer data) async;
Paramètres d'appel :
- data:Buffer, précisez les données à chiffrer
Résultats de retour :
- Buffer, renvoie les données chiffrées
decrypt
Décrypter les données à l'aide du chiffrement de l'algorithme actuel
1Buffer Cipher.decrypt(Buffer data) async;
Paramètres d'appel :
- data:Buffer, précisez les données à décrypter
Résultats de retour :
- Buffer, renvoie les données décryptées
toString
Renvoie la représentation sous forme de chaîne de l'objet. Généralement, "[Native Object]" est renvoyé. L'objet peut être réimplémenté en fonction de ses propres caractéristiques.
1String Cipher.toString();
Résultats de retour :
- String, renvoie la représentation sous forme de chaîne de l'objet
toJSON
Renvoie une représentation au format JSON de l'objet, renvoyant généralement une collection de propriétés lisibles définies par l'objet.
1Value Cipher.toJSON(String key = "");
Paramètres d'appel :
- key: Chaîne, non utilisée
Résultats de retour :
- Value, renvoie une valeur contenant du JSON sérialisable