Objet objet intégré

ChiffreObjet

Objet algorithme de chiffrement symétrique

L'objet de chiffrement appartient àcryptomodule, créez :

1
var 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 3
const 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 randomBytesavons 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 encryptchiffrons le texte brut à l'aide de la méthode de l'objet Cipher :

1 2 3
const plaintext = 'Hello, world!'; const encrypted = cipher.encrypt(plaintext); console.log(encrypted); // output encrypted data

Dans le code ci-dessus, nous utilisons encryptla 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 Hexetc. 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 3
const 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 decryptla 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 2
new 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 3
new 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 4
new 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

1
readonly String Cipher.name;

keySize

Entier, renvoie la longueur actuelle du mot de passe de l'algorithme en bits

1
readonly Integer Cipher.keySize;

ivSize

Entier, renvoie la longueur initiale du vecteur de l'algorithme actuel, en octets

1
readonly Integer Cipher.ivSize;

blockSize

Entier, renvoie la longueur actuelle du bloc de données de l'algorithme en octets

1
readonly Integer Cipher.blockSize;

fonction membre

paddingMode

Utiliser le mode remplissage

1
Cipher.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

1
Buffer 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

1
Buffer 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.

1
String 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.

1
Value 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