Module de base

modulecrypto

cryptoLe module est fibjsun module d'algorithme de cryptage intégré. Il fournit un cryptage symétrique, un cryptage asymétrique, un algorithme de résumé, un générateur de nombres aléatoires cryptographiques et d'autres fonctions. Avant utilisation, require('crypto')le module doit être chargé via .

Dans cryptole module, de nombreux objets sont disponibles, tels que :

  • PKey: Objet algorithme de chiffrement asymétrique
  • X509Cert: Objet utilisé pour manipuler les certificats X.509
  • Cipher: Objet utilisé pour implémenter le chiffrement symétrique
  • Digest: Objet utilisé pour implémenter l'algorithme digest

Avant d'utiliser l'algorithme de chiffrement, vous devez créer un objet clé. Par exemple, l' AESexemple suivant crée un objet clé :

1 2
const crypto = require('crypto'); const key = crypto.randomBytes(16); // generate a 16-byte random key

Ensuite, utilisez Cipherl'objet pour chiffrer le texte brut :

1 2 3 4
const c = new crypto.Cipher(crypto.AES, crypto.ECB, key); const data = 'hello, world'; const encrypted = c.encrypt(data).hex(); console.log(encrypted); // output encrypted data

Dans l'exemple ci-dessus, un objet AESchiffré est créé , le texte brut est chiffré à l'aide de la méthode et le résultat du chiffrement est renvoyé.Cipherencrypt

En plus des algorithmes de chiffrement symétriques, cryptole module peut également prendre en charge des algorithmes de chiffrement asymétriques et des algorithmes de digestion. Par exemple, l'exemple suivant est un code qui utilise PKeyet Digestdes objets pour implémenter le chiffrement SHA256 :

1 2 3 4 5 6
const privateKey = crypto.loadPKey('private.pem'); // read private key from file const data = 'hello, world'; const digest = new crypto.Digest(hash.SHA256); digest.update(data); const signature = privateKey.sign(digest.digest()); console.log(signature); // output signature

Dans l'exemple ci-dessus, un fichier de clé privée est d'abord lu et les données d'entrée sont préparées. Ensuite, un Digestobjet SHA256 est créé et updateles données sont ajoutées au calcul de hachage à l'aide de la méthode. Une fois le calcul terminé, utilisez privateKey.signla méthode pour signer et afficher le résultat de la signature.

En résumé, cryptole module fournit une variété d'algorithmes de chiffrement, d'algorithmes de résumé et d'objets associés. Ces fonctions peuvent nous aider à répondre à diverses exigences de sécurité, telles que le chiffrement symétrique et asymétrique, les signatures numériques et la vérification du chiffrement.

objet

Cipher

CipherConstructeur, voirCipher

1
Cipher crypto.Cipher;

PKey

PKeyConstructeur, voirPKey

1
PKey crypto.PKey;

ECKey

ECKeyConstructeur, voirECKey

1
ECKey crypto.ECKey;

BlsKey

BlsKeyConstructeur, voirBlsKey

1
BlsKey crypto.BlsKey;

X509Cert

X509CertConstructeur, voirX509Cert

1
X509Cert crypto.X509Cert;

X509Crl

X509CrlConstructeur, voirX509Crl

1
X509Crl crypto.X509Crl;

X509Req

X509ReqConstructeur, voirX509Req

1
X509Req crypto.X509Req;

fonction statique

createHash

Crée un objet de résumé d'informations basé sur le nom de l'algorithme donné

1
static Digest crypto.createHash(String algo);

Paramètres d'appel :

  • algo: Chaîne, spécifiant l'algorithme de l'objet de résumé d'informations

Résultats de retour :

  • Digest, renvoie l'objet récapitulatif des informations

createHmac

Crée un objet récapitulatif des informations hmac basé sur le nom de l'algorithme donné

1 2
static Digest crypto.createHmac(String algo, Buffer key);

Paramètres d'appel :

  • algo: Chaîne, spécifiant l'algorithme de l'objet de résumé d'informations
  • key:Buffer, clé de signature binaire

Résultats de retour :

  • Digest, renvoie l'objet récapitulatif des informations

loadCert

Charger un certificat au format CRT/PEM/DER, appelable plusieurs fois

1
static X509Cert crypto.loadCert(String filename);

Paramètres d'appel :

  • filename: Chaîne, nom du fichier de certificat

Résultats de retour :

  • X509Cert, renvoie un objet contenant le certificat

loadCrl

Charger un certificat de révocation au format PEM/DER, appelable plusieurs fois

1
static X509Crl crypto.loadCrl(String filename);

Paramètres d'appel :

  • filename: Chaîne, nom du fichier du certificat de révocation

Résultats de retour :

  • X509Crl, renvoie un objet contenant le certificat révoqué

loadReq

Charger une demande de certificat au format PEM/DER, appelable plusieurs fois

1
static X509Req crypto.loadReq(String filename);

Paramètres d'appel :

  • filename: Chaîne, nom du fichier de demande de certificat

Résultats de retour :

  • X509Req, renvoie un objet contenant le certificat demandé

loadPKey

Charger une clé publique ou privée asymétrique au format CRT/PEM/DER

1
static PKey crypto.loadPKey(String filename);

Paramètres d'appel :

  • filename: Nom de fichier de chaîne, de clé publique ou de clé privée

Résultats de retour :


randomBytes

Générez des nombres aléatoires de taille spécifiée à l'aide du générateur havege

1
static Buffer crypto.randomBytes(Integer size = 16) async;

Paramètres d'appel :

  • size: Entier, précise la taille du nombre aléatoire généré

Résultats de retour :

  • Buffer, renvoie le nombre aléatoire généré

simpleRandomBytes

Générez des nombres aléatoires de faible force d'une taille spécifiée, à l'aide d'un algorithme rapide

1
static Buffer crypto.simpleRandomBytes(Integer size = 16) async;

Paramètres d'appel :

  • size: Entier, précise la taille du nombre aléatoire généré

Résultats de retour :

  • Buffer, renvoie le nombre aléatoire généré

pseudoRandomBytes

Générez des nombres pseudo-aléatoires de taille spécifiée, à l'aide du générateur d'entropie

1
static Buffer crypto.pseudoRandomBytes(Integer size = 16) async;

Paramètres d'appel :

  • size: Entier, précise la taille du nombre aléatoire généré

Résultats de retour :

  • Buffer, renvoie le nombre aléatoire généré

randomFill

Utilisez des nombres aléatoires pour remplir le champ spécifiéBuffer, en utilisant le générateur havege

1 2 3
static Buffer crypto.randomFill(Buffer buffer, Integer offset = 0, Integer size = -1) async;

Paramètres d'appel :

  • buffer:Buffer, précisez le généréBuffer
  • offset: Entier, spécifie le décalage de départ, la valeur par défaut est 0
  • size: Entier, spécifie la taille du nombre aléatoire généré, la valeur par défaut est buffer.length - offset

Résultats de retour :

  • Buffer, renvoie le nombre aléatoire généré

randomArt

Génère une image de caractère visuel des données données

1 2 3
static String crypto.randomArt(Buffer data, String title, Integer size = 8);

Paramètres d'appel :

  • data:Buffer, précisez les données à afficher
  • title: Chaîne, spécifie le titre de l'image du caractère. Les caractères multi-octets provoqueront des erreurs de largeur.
  • size: Entier, taille de l'image des caractères

Résultats de retour :

  • String, renvoie l'image de chaîne visuelle générée

generateKey

Générer une clé privée RSA

1
static PKey crypto.generateKey(Integer size) async;

Paramètres d'appel :

  • size: Entier, spécifie la longueur de la clé RSA, en bits

Résultats de retour :

  • PKey, renvoie un objet contenant la clé privée générée

Générer une clé privée à courbe elliptique

1
static PKey crypto.generateKey(String curve = "secp521r1") async;

Paramètres d'appel :

  • curve: Chaîne, spécifie la courbe elliptique prédéfinie, la valeur par défaut est 'secp256r1'

Résultats de retour :

  • PKey, renvoie un objet contenant la clé privée générée

courbe Les courbes facultatives incluent les courbes et alias NIST comme suit :

courbe Alias
NIST P-192 'NIST P-192', 'p192', 'P-192', 'prime192v1', 'secp192r1'
NISTP-224 'NIST P-224', 'p224', 'P-224', 'prime224v1', 'secp224r1'
NIST P-256 'NIST P-256', 'p256', 'P-256', 'prime256v1', 'secp256r1'
NIST P-384 'NIST P-384', 'p384', 'P-384', 'prime384v1', 'secp384r1'
NIST P-521 'NIST P-521', 'p521', 'P-521', 'prime521v1', 'secp521r1'

Les autres courbes prises en charge incluent : "brainpoolP512r1", "brainpoolP384r1", "secp256k1", "P-256K", "brainpoolP256r1", "sm2p256r1", "SM2", "Ed25519", "BLS12381_G1", "BLS12381_G2".


pbkdf1

Générez la clé binaire requise en fonction du mot de passe en texte brut basé sur pbkdf1

1 2 3 4 5
static Buffer crypto.pbkdf1(Buffer password, Buffer salt, Integer iterations, Integer size, Integer algo) async;

Paramètres d'appel :

  • password:Buffer, précisez le mot de passe à utiliser
  • salt:Buffer, précisez le sel utilisé par hmac
  • iterations: Entier, précisez le nombre d'itérations
  • size: Nombre entier, spécifiez la taille de la clé
  • algo: Entier, précisez lehashalgorithme, voirhashmodule

Résultats de retour :

  • Buffer, renvoie la clé binaire générée

Générez la clé binaire requise en fonction du mot de passe en texte brut basé sur pbkdf1

1 2 3 4 5
static Buffer crypto.pbkdf1(Buffer password, Buffer salt, Integer iterations, Integer size, String algoName) async;

Paramètres d'appel :

  • password:Buffer, précisez le mot de passe à utiliser
  • salt:Buffer, précisez le sel utilisé par hmac
  • iterations: Entier, précisez le nombre d'itérations
  • size: Nombre entier, spécifiez la taille de la clé
  • algoName: Chaîne, spécifie lehashalgorithme, voirhashmodule

Résultats de retour :

  • Buffer, renvoie la clé binaire générée

pbkdf2

Générez la clé binaire requise en fonction du mot de passe en texte brut selon rfc2898

1 2 3 4 5
static Buffer crypto.pbkdf2(Buffer password, Buffer salt, Integer iterations, Integer size, Integer algo) async;

Paramètres d'appel :

  • password:Buffer, précisez le mot de passe à utiliser
  • salt:Buffer, précisez le sel utilisé par hmac
  • iterations: Entier, précisez le nombre d'itérations
  • size: Nombre entier, spécifiez la taille de la clé
  • algo: Entier, précisez lehashalgorithme, voirhashmodule

Résultats de retour :

  • Buffer, renvoie la clé binaire générée

Générez la clé binaire requise en fonction du mot de passe en texte brut selon rfc2898

1 2 3 4 5
static Buffer crypto.pbkdf2(Buffer password, Buffer salt, Integer iterations, Integer size, String algoName) async;

Paramètres d'appel :

  • password:Buffer, précisez le mot de passe à utiliser
  • salt:Buffer, précisez le sel utilisé par hmac
  • iterations: Entier, précisez le nombre d'itérations
  • size: Nombre entier, spécifiez la taille de la clé
  • algoName: Chaîne, spécifie lehashalgorithme, voirhashmodule

Résultats de retour :

  • Buffer, renvoie la clé binaire générée

getHashes

Bénéficiez du support du module de chiffrementhash(Résumé) Algorithmes, tels que « md5 », « sha224 »

1
static Array crypto.getHashes();

Résultats de retour :

  • Array, renvoie fibjs pris en chargehashtableau d'algorithmes

constante

AES

Spécifiez l'algorithme de chiffrement symétrique AES, prend en charge les clés 128, 192, 256 bits, le mode de fonctionnement du chiffrement par bloc prend en charge ECB, CBC, CFB128, CTR, GCM, CCM, XTS.

1
const crypto.AES = 1;

DES

Spécifie l'algorithme de chiffrement symétrique DES, prend en charge la clé de 64 bits et le mode de fonctionnement du chiffrement par bloc prend en charge ECB, CBC.

1
const crypto.DES = 2;

DES_EDE3

Spécifiez l'algorithme de cryptage symétrique DES-EDE3, prend en charge la clé de 192 bits, le mode de fonctionnement du chiffrement par bloc prend en charge ECB, CBC

1
const crypto.DES_EDE3 = 3;

CAMELLIA

Spécifiez l'algorithme de cryptage symétrique CAMELLIA, prend en charge les clés 128, 192, 256 bits, le mode de fonctionnement du chiffrement par bloc prend en charge ECB, CBC, CFB128, CTR, GCM, CCM.

1
const crypto.CAMELLIA = 4;

ARIA

Spécifiez l'algorithme de chiffrement symétrique ARIA, prend en charge les clés 128, 192, 256 bits, le mode de fonctionnement du chiffrement par bloc prend en charge ECB, CBC, CFB128, CTR, GCM, CCM.

1
const crypto.ARIA = 5;

CHACHA20

Spécifiez l'algorithme de chiffrement symétrique CHACHA20, prend en charge la clé de 256 bits et le mode de fonctionnement du chiffrement par bloc prend en charge POLY1305.

1
const crypto.CHACHA20 = 6;

SM4

Spécifiez l'algorithme de chiffrement symétrique SM4, le mode de fonctionnement du chiffrement par bloc prend en charge ECB, CBC

1
const crypto.SM4 = 7;

ECB

Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge la BCE

1
const crypto.ECB = 1;

CBC

Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge CBC

1
const crypto.CBC = 2;

CFB64

Spécifiez le mode de fonctionnement du chiffrement par bloc pour prendre en charge CFB64

1
const crypto.CFB64 = 3;

CFB128

Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge CFB128

1
const crypto.CFB128 = 4;

OFB

Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge OFB

1
const crypto.OFB = 5;

CTR

Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge le CTR

1
const crypto.CTR = 6;

GCM

Spécifiez le mode de fonctionnement du chiffrement par bloc pour prendre en charge GCM

1
const crypto.GCM = 7;

STREAM

Spécifier le mode de chiffrement de flux

1
const crypto.STREAM = 8;

CCM

Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge CCM

1
const crypto.CCM = 9;

XTS

Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge XTS

1
const crypto.XTS = 10;

POLY1305

Spécifiez le mode de fonctionnement du chiffrement par bloc pour prendre en charge POLY1305

1
const crypto.POLY1305 = 11;

PKCS7

Spécifiez le mode de remplissage comme PKCS7

1
const crypto.PKCS7 = 0;

ONE_AND_ZEROS

Spécifiez le mode de remplissage comme ONE_AND_ZEROS

1
const crypto.ONE_AND_ZEROS = 1;

ZEROS_AND_LEN

Spécifiez le mode de remplissage comme ZEROS_AND_LEN

1
const crypto.ZEROS_AND_LEN = 2;

ZEROS

Spécifiez le mode de remplissage comme ZÉROS

1
const crypto.ZEROS = 3;

NOPADDING

Spécifiez le mode de remplissage comme NOPADDING

1
const crypto.NOPADDING = 4;