Mòdul mòdul bàsic

mòdul criptogràfic

cryptoEl mòdul és un mòdul d'algorisme de xifratge fibjsintegrat . Proporciona funcions com ara xifratge simètric, xifratge asimètric, algorisme de resum i generador de números aleatoris criptogràfics. Abans d'utilitzar-lo, cal require('crypto')carregar .

Al cryptomòdul , hi ha molts objectes disponibles, com ara:

  • PKey: objecte d'algoritme de xifratge asimètric
  • X509Cert: Objecte per a la manipulació de certificats X.509
  • Cipher: Objecte utilitzat per implementar el xifratge simètric
  • Digest: objecte utilitzat per implementar l'algoritme de resum

Abans d'utilitzar l'algorisme de xifratge, heu de crear un objecte clau, com ara l'exemple següent de creació d'un objecte AESclau :

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

A continuació, utilitzeu Cipherl'objecte per xifrar el text pla:

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

A l'exemple anterior, es crea un objecte AESxifrat Cipher, el text sense format es xifra mitjançant encryptel mètode i es retorna el resultat xifrat.

A més dels algorismes de xifratge simètric, cryptoel mòdul també pot suportar algorismes de xifratge asimètric i algorismes de resum. Per exemple, l'exemple següent és el codi per implementar el xifratge SHA256 utilitzant PKeyi objectes:Digest

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

A l'exemple anterior, primer es llegeix un fitxer de clau privada i es preparen les dades d'entrada. A continuació, es crea un Digestobjecte i updateles dades s'afegeixen al càlcul Hash mitjançant el mètode. Un cop finalitzat el càlcul, utilitzeu privateKey.signel mètode per signar i sortir el resultat de la signatura.

En resum, cryptoel mòdul ofereix una varietat d'algorismes de xifratge, algorismes de resum i objectes relacionats. Aquestes funcions ens poden ajudar a assolir diversos requisits de seguretat, com ara el xifratge simètric i asimètric, la signatura digital i la verificació del xifratge.

objecte

Cipher

Cipherconstructor, veureCipher

1
Cipher crypto.Cipher;

PKey

PKeyconstructor, veurePKey

1
PKey crypto.PKey;

ECKey

ECKeyconstructor, veureECKey

1
ECKey crypto.ECKey;

BlsKey

BlsKeyconstructor, veureBlsKey

1
BlsKey crypto.BlsKey;

X509Cert

X509Certconstructor, veureX509Cert

1
X509Cert crypto.X509Cert;

X509Crl

X509Crlconstructor, veureX509Crl

1
X509Crl crypto.X509Crl;

X509Req

X509Reqconstructor, veureX509Req

1
X509Req crypto.X509Req;

funció estàtica

createHash

Crea un objecte de resum informatiu basat en el nom de l'algorisme donat

1
static Digest crypto.createHash(String algo);

Paràmetres de trucada:

  • algo: String, especifica l'algorisme de l'objecte de resum del missatge

resultat de retorn:

  • Digest, retorna un objecte de resum del missatge

createHmac

Creeu un objecte de resum d'informació hmac a partir del nom d'algorisme donat

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

Paràmetres de trucada:

  • algo: String, especifica l'algorisme de l'objecte de resum del missatge
  • key:Buffer, la clau de signatura binària

resultat de retorn:

  • Digest, retorna un objecte de resum del missatge

loadCert

Carregueu un certificat en format CRT/PEM/DER, que es pot cridar diverses vegades

1
static X509Cert crypto.loadCert(String filename);

Paràmetres de trucada:

  • filename: Cadena, nom del fitxer del certificat

resultat de retorn:

  • X509Cert, retorna un objecte que conté el certificat

loadCrl

Carregueu un certificat revocat en format PEM/DER, que es pot cridar diverses vegades

1
static X509Crl crypto.loadCrl(String filename);

Paràmetres de trucada:

  • filename: Cadena, nom del fitxer del certificat revocat

resultat de retorn:

  • X509Crl, retorna un objecte que conté el certificat revocat

loadReq

Carregueu una sol·licitud de certificat en format PEM/DER, que es pot cridar diverses vegades

1
static X509Req crypto.loadReq(String filename);

Paràmetres de trucada:

  • filename: cadena, nom del fitxer de sol·licitud de certificat

resultat de retorn:

  • X509Req, retorna un objecte que conté el certificat sol·licitat

loadPKey

Carregueu una clau pública o privada asimètrica en format CRT/PEM/DER

1
static PKey crypto.loadPKey(String filename);

Paràmetres de trucada:

  • filename: nom de fitxer de cadena, clau pública o clau privada

resultat de retorn:


randomBytes

Genereu un nombre aleatori de la mida especificada, utilitzant el generador havege

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

Paràmetres de trucada:

  • size: Enter, especifica la mida del nombre aleatori generat

resultat de retorn:

  • Buffer, retorna el nombre aleatori generat

simpleRandomBytes

Genereu números aleatoris de baixa intensitat de la mida especificada, utilitzant un algorisme ràpid

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

Paràmetres de trucada:

  • size: Enter, especifica la mida del nombre aleatori generat

resultat de retorn:

  • Buffer, retorna el nombre aleatori generat

pseudoRandomBytes

Genereu un nombre pseudoaleatori de la mida especificada, utilitzant el generador d'entropia

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

Paràmetres de trucada:

  • size: Enter, especifica la mida del nombre aleatori generat

resultat de retorn:

  • Buffer, retorna el nombre aleatori generat

randomFill

Omple l'especificat amb nombres aleatorisBuffer, utilitzant el generador havege

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

Paràmetres de trucada:

  • buffer:Buffer, especificant el generatBuffer
  • offset: Enter, especifiqueu el desplaçament inicial, el valor per defecte és 0
  • size: Enter, especifica la mida del nombre aleatori generat, el valor per defecte és buffer.length - offset

resultat de retorn:

  • Buffer, retorna el nombre aleatori generat

randomArt

Generar una imatge de caràcter visual de les dades donades

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

Paràmetres de trucada:

  • data:Buffer, especifica les dades a mostrar
  • title: Cadena, especifica el títol de la imatge del caràcter, els caràcters de diversos bytes provocaran errors d'amplada
  • size: Sencer, mida de la imatge del caràcter

resultat de retorn:

  • String, retorna la imatge de cadena visualitzada resultant

generateKey

Genereu una clau privada RSA

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

Paràmetres de trucada:

  • size: Enter, especifiqueu la longitud de la clau RSA en bits

resultat de retorn:

  • PKey, retorna un objecte que conté la clau privada generada

Genereu una clau privada de corba el·líptica

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

Paràmetres de trucada:

  • curve: Cadena, especifica la corba el·líptica predeterminada, el valor per defecte és 'secp256r1'

resultat de retorn:

  • PKey, retorna un objecte que conté la clau privada generada

corba Les corbes opcionals inclouen corbes NIST i àlies de la següent manera:

corba àlies
NIST P-192 "NIST P-192", "p192", "P-192", "prime192v1", "secp192r1"
NIST P-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"

Altres corbes compatibles inclouen: "brainpoolP512r1", "brainpoolP384r1", "secp256k1", "P-256K", "brainpoolP256r1", "sm2p256r1", "SM2", "Ed25519", "BLS12381_G1" "BLS12381_G1" 81_G223 ",


pbkdf1

D'acord amb pbkdf1, genereu la clau binària necessària segons la contrasenya de text sense format

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

Paràmetres de trucada:

  • password:Buffer, especifiqueu la contrasenya que voleu utilitzar
  • salt:Buffer, especifica la sal utilitzada per hmac
  • iterations: Enter, especifica el nombre d'iteracions
  • size: Enter, especifica la mida de la clau
  • algo: Enter, especifica elhashalgorisme, vegeuhashmòdul

resultat de retorn:

  • Buffer, retorna la clau binària generada

D'acord amb pbkdf1, genereu la clau binària necessària segons la contrasenya de text sense format

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

Paràmetres de trucada:

  • password:Buffer, especifiqueu la contrasenya que voleu utilitzar
  • salt:Buffer, especifica la sal utilitzada per hmac
  • iterations: Enter, especifica el nombre d'iteracions
  • size: Enter, especifica la mida de la clau
  • algoName: Cadena, especifica elhashalgorisme, vegeuhashmòdul

resultat de retorn:

  • Buffer, retorna la clau binària generada

pbkdf2

Segons rfc2898, genereu la clau binària necessària segons la contrasenya de text sense format

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

Paràmetres de trucada:

  • password:Buffer, especifiqueu la contrasenya que voleu utilitzar
  • salt:Buffer, especifica la sal utilitzada per hmac
  • iterations: Enter, especifica el nombre d'iteracions
  • size: Enter, especifica la mida de la clau
  • algo: Enter, especifica elhashalgorisme, vegeuhashmòdul

resultat de retorn:

  • Buffer, retorna la clau binària generada

Segons rfc2898, genereu la clau binària necessària segons la contrasenya de text sense format

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

Paràmetres de trucada:

  • password:Buffer, especifiqueu la contrasenya que voleu utilitzar
  • salt:Buffer, especifica la sal utilitzada per hmac
  • iterations: Enter, especifica el nombre d'iteracions
  • size: Enter, especifica la mida de la clau
  • algoName: Cadena, especifica elhashalgorisme, vegeuhashmòdul

resultat de retorn:

  • Buffer, retorna la clau binària generada

getHashes

Obteniu els compatibles amb el mòdul criptogràfichashalgorisme (abstracte), com ara 'md5', 'sha224'

1
static Array crypto.getHashes();

resultat de retorn:

  • Array, retorna fibjs compatibleshashmatriu d'algoritmes

constant

AES

Especifiqueu l'algorisme de xifratge simètric AES, admet clau de 128, 192, 256 bits, el mode de treball de xifratge de blocs admet ECB, CBC, CFB128, CTR, GCM, CCM, XTS

1
const crypto.AES = 1;

DES

Especifiqueu l'algoritme de xifratge simètric DES, admet clau de 64 bits, el mode de treball de xifratge de blocs admet ECB, CBC

1
const crypto.DES = 2;

DES_EDE3

Especifiqueu l'algorisme de xifratge simètric DES-EDE3, admet clau de 192 bits, el mode de treball de xifratge de blocs admet ECB, CBC

1
const crypto.DES_EDE3 = 3;

CAMELLIA

Especifiqueu l'algorisme de xifratge simètric CAMELLIA, admet clau de 128, 192, 256 bits, el mode de treball de xifratge de blocs admet ECB, CBC, CFB128, CTR, GCM, CCM

1
const crypto.CAMELLIA = 4;

ARIA

Especifiqueu l'algorisme de xifratge simètric ARIA, admet clau de 128, 192, 256 bits, el mode de treball de xifratge de blocs admet ECB, CBC, CFB128, CTR, GCM, CCM

1
const crypto.ARIA = 5;

CHACHA20

Especifiqueu l'algoritme de xifratge simètric CHACHA20, admet clau de 256 bits i admet POLY1305 en mode de treball de xifratge de blocs

1
const crypto.CHACHA20 = 6;

SM4

Especifiqueu l'algorisme de xifratge simètric SM4, el mode de treball de xifratge de blocs admet ECB, CBC

1
const crypto.SM4 = 7;

ECB

Especifiqueu el mode de treball de xifratge de blocs per admetre l'ECB

1
const crypto.ECB = 1;

CBC

Especifiqueu el mode de treball de xifratge de blocs per admetre CBC

1
const crypto.CBC = 2;

CFB64

Especifiqueu el mode de treball de xifrat de blocs per admetre CFB64

1
const crypto.CFB64 = 3;

CFB128

Especifiqueu el mode de treball de xifratge de blocs per admetre CFB128

1
const crypto.CFB128 = 4;

OFB

Especifiqueu el mode de treball de xifrat de blocs per admetre OFB

1
const crypto.OFB = 5;

CTR

Especifiqueu el mode de treball de xifratge de blocs per admetre el CTR

1
const crypto.CTR = 6;

GCM

Especifiqueu el mode de treball de xifratge de blocs per admetre GCM

1
const crypto.GCM = 7;

STREAM

Especifica el mode de xifratge de flux

1
const crypto.STREAM = 8;

CCM

Especifiqueu el mode de treball de xifratge de blocs per admetre CCM

1
const crypto.CCM = 9;

XTS

Especifiqueu el mode de treball de xifratge de blocs per admetre XTS

1
const crypto.XTS = 10;

POLY1305

Especifiqueu el mode de treball de xifratge de blocs per admetre POLY1305

1
const crypto.POLY1305 = 11;

PKCS7

Especifiqueu el mode de farciment com a PKCS7

1
const crypto.PKCS7 = 0;

ONE_AND_ZEROS

Especifiqueu el mode d'ompliment com a ONE_AND_ZEROS

1
const crypto.ONE_AND_ZEROS = 1;

ZEROS_AND_LEN

Especifiqueu el mode d'ompliment com a ZEROS_AND_LEN

1
const crypto.ZEROS_AND_LEN = 2;

ZEROS

Especifiqueu el mode d'ompliment com a ZEROS

1
const crypto.ZEROS = 3;

NOPADDING

Especifiqueu el mode de farciment com NOPAADDING

1
const crypto.NOPADDING = 4;