modulecrypto
crypto
Le module est fibjs
un 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 crypto
le module, de nombreux objets sont disponibles, tels que :
PKey
: Objet algorithme de chiffrement asymétriqueX509Cert
: Objet utilisé pour manipuler les certificats X.509Cipher
: Objet utilisé pour implémenter le chiffrement symétriqueDigest
: 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' AES
exemple suivant crée un objet clé :
1
2const crypto = require('crypto');
const key = crypto.randomBytes(16); // generate a 16-byte random key
Ensuite, utilisez Cipher
l'objet pour chiffrer le texte brut :
1
2
3
4const 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 AES
chiffré est créé , le texte brut est chiffré à l'aide de la méthode et le résultat du chiffrement est renvoyé.Cipher
encrypt
En plus des algorithmes de chiffrement symétriques, crypto
le 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 PKey
et Digest
des objets pour implémenter le chiffrement SHA256 :
1
2
3
4
5
6const 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 Digest
objet SHA256 est créé et update
les données sont ajoutées au calcul de hachage à l'aide de la méthode. Une fois le calcul terminé, utilisez privateKey.sign
la méthode pour signer et afficher le résultat de la signature.
En résumé, crypto
le 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
1Cipher crypto.Cipher;
PKey
1PKey crypto.PKey;
ECKey
1ECKey crypto.ECKey;
BlsKey
BlsKeyConstructeur, voirBlsKey
1BlsKey crypto.BlsKey;
X509Cert
X509CertConstructeur, voirX509Cert
1X509Cert crypto.X509Cert;
X509Crl
X509CrlConstructeur, voirX509Crl
1X509Crl crypto.X509Crl;
X509Req
X509ReqConstructeur, voirX509Req
1X509Req crypto.X509Req;
fonction statique
createHash
Crée un objet de résumé d'informations basé sur le nom de l'algorithme donné
1static 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
2static 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
1static 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
1static 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
1static 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
1static 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
1static 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
1static 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
1static 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
3static 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
3static 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
1static 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
1static 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
5static 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
5static 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
5static 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
5static 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 »
1static 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.
1const 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.
1const 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
1const 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.
1const 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.
1const 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.
1const 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
1const crypto.SM4 = 7;
ECB
Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge la BCE
1const crypto.ECB = 1;
CBC
Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge CBC
1const crypto.CBC = 2;
CFB64
Spécifiez le mode de fonctionnement du chiffrement par bloc pour prendre en charge CFB64
1const crypto.CFB64 = 3;
CFB128
Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge CFB128
1const crypto.CFB128 = 4;
OFB
Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge OFB
1const crypto.OFB = 5;
CTR
Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge le CTR
1const crypto.CTR = 6;
GCM
Spécifiez le mode de fonctionnement du chiffrement par bloc pour prendre en charge GCM
1const crypto.GCM = 7;
STREAM
Spécifier le mode de chiffrement de flux
1const crypto.STREAM = 8;
CCM
Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge CCM
1const crypto.CCM = 9;
XTS
Spécifier le mode de fonctionnement du chiffrement par bloc pour prendre en charge XTS
1const crypto.XTS = 10;
POLY1305
Spécifiez le mode de fonctionnement du chiffrement par bloc pour prendre en charge POLY1305
1const crypto.POLY1305 = 11;
PKCS7
Spécifiez le mode de remplissage comme PKCS7
1const crypto.PKCS7 = 0;
ONE_AND_ZEROS
Spécifiez le mode de remplissage comme ONE_AND_ZEROS
1const crypto.ONE_AND_ZEROS = 1;
ZEROS_AND_LEN
Spécifiez le mode de remplissage comme ZEROS_AND_LEN
1const crypto.ZEROS_AND_LEN = 2;
ZEROS
Spécifiez le mode de remplissage comme ZÉROS
1const crypto.ZEROS = 3;
NOPADDING
Spécifiez le mode de remplissage comme NOPADDING
1const crypto.NOPADDING = 4;