Mòdul mòdul bàsic

modulecrypto

cryptoEl mòdul és fibjsun mòdul d'algorisme de xifratge integrat. Proporciona xifratge simètric, xifratge asimètric, algorisme de resum, generador de números aleatoris criptogràfics i altres funcions. Abans d'utilitzar-lo, require('crypto')s'ha de carregar el mòdul mitjançant .

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

  • PKey: objecte d'algoritme de xifratge asimètric
  • X509Cert: Objecte utilitzat per manipular 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. Per exemple, l' AESexemple següent crea un objecte clau:

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 , el text sense format es xifra mitjançant el mètode i es retorna el resultat del xifratge.Cipherencrypt

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 que utilitza PKeyi Digestobjectes per implementar el xifratge 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

A l'exemple anterior, primer es llegeix un fitxer de clau privada i es preparen les dades d'entrada. DigestA continuació, es crea un objecte SHA256 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, les signatures digitals i la verificació del xifratge.

objecte

Cipher

CipherConstructor, a veureCipher

1
Cipher crypto.Cipher;

PKey

PKeyConstructor, a veurePKey

1
PKey crypto.PKey;

ECKey

ECKeyConstructor, a veureECKey

1
ECKey crypto.ECKey;

BlsKey

BlsKeyConstructor, a veureBlsKey

1
BlsKey crypto.BlsKey;

X509Cert

X509CertConstructor, a veureX509Cert

1
X509Cert crypto.X509Cert;

X509Crl

X509CrlConstructor, a veureX509Crl

1
X509Crl crypto.X509Crl;

X509Req

X509ReqConstructor, a veureX509Req

1
X509Req crypto.X509Req;

funció estàtica

createHash

Crea un objecte de resum d'informació basat en el nom d'algorisme donat

1
static Digest crypto.createHash(String algo);

Paràmetres de trucada:

  • algo: Cadena, que especifica l'algorisme de l'objecte de resum d'informació

Resultats de retorn:

  • Digest, retorna l'objecte de resum d'informació

createHmac

Crea un objecte de resum d'informació hmac basat en el nom d'algorisme donat

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

Paràmetres de trucada:

  • algo: Cadena, que especifica l'algorisme de l'objecte de resum d'informació
  • key:Buffer, clau de signatura binària

Resultats de retorn:

  • Digest, retorna l'objecte de resum d'informació

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

Resultats de retorn:

  • X509Cert, retorna un objecte que conté el certificat

loadCrl

Carregueu un certificat de revocació 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 de revocació

Resultats 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

Resultats 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

Resultats de retorn:


randomBytes

Genereu números aleatoris de mida especificada mitjançant el generador havege

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

Paràmetres de trucada:

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

Resultats de retorn:

  • Buffer, retorna el nombre aleatori generat

simpleRandomBytes

Genereu números aleatoris de baixa intensitat d'una mida especificada mitjançant un algorisme ràpid

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

Paràmetres de trucada:

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

Resultats de retorn:

  • Buffer, retorna el nombre aleatori generat

pseudoRandomBytes

Genereu nombres pseudoaleatoris de mida especificada, utilitzant el generador d'entropia

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

Paràmetres de trucada:

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

Resultats de retorn:

  • Buffer, retorna el nombre aleatori generat

randomFill

Utilitzeu números aleatoris per omplir l'especificatBuffer, 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, especifiqueu el generatBuffer
  • offset: Enter, especifica 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

Resultats de retorn:

  • Buffer, retorna el nombre aleatori generat

randomArt

Genera una imatge de caràcter visual de les dades proporcionades

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

Paràmetres de trucada:

  • data:Buffer, especifiqueu les dades que es mostraran
  • 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

Resultats de retorn:

  • String, retorna la imatge de cadena visual generada

generateKey

Genereu una clau privada RSA

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

Paràmetres de trucada:

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

Resultats 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'

Resultats 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

Genereu la clau binària necessària a partir de la contrasenya de text sense format basada en pbkdf1

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, especifiqueu la sal utilitzada per hmac
  • iterations: Enter, especifiqueu el nombre d'iteracions
  • size: Sencer, especifiqueu la mida de la clau
  • algo: Enter, especifiqueu elhashalgorisme, vegeuhashmòdul

Resultats de retorn:

  • Buffer, retorna la clau binària generada

Genereu la clau binària necessària a partir de la contrasenya de text sense format basada en pbkdf1

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, especifiqueu la sal utilitzada per hmac
  • iterations: Enter, especifiqueu el nombre d'iteracions
  • size: Sencer, especifiqueu la mida de la clau
  • algoName: Cadena, especifica elhashalgorisme, vegeuhashmòdul

Resultats de retorn:

  • Buffer, retorna la clau binària generada

pbkdf2

Genereu la clau binària necessària a partir de la contrasenya de text sense format segons rfc2898

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, especifiqueu la sal utilitzada per hmac
  • iterations: Enter, especifiqueu el nombre d'iteracions
  • size: Sencer, especifiqueu la mida de la clau
  • algo: Enter, especifiqueu elhashalgorisme, vegeuhashmòdul

Resultats de retorn:

  • Buffer, retorna la clau binària generada

Genereu la clau binària necessària a partir de la contrasenya de text sense format segons rfc2898

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, especifiqueu la sal utilitzada per hmac
  • iterations: Enter, especifiqueu el nombre d'iteracions
  • size: Sencer, especifiqueu la mida de la clau
  • algoName: Cadena, especifica elhashalgorisme, vegeuhashmòdul

Resultats de retorn:

  • Buffer, retorna la clau binària generada

getHashes

Obteniu suport per al mòdul criptogràfichash(Resum) Algorismes, com ara 'md5', 'sha224'

1
static Array crypto.getHashes();

Resultats 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

Especifica l'algoritme de xifratge simètric DES, admet clau de 64 bits i 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 el mode de treball de xifratge de bloc admet POLY1305

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 xifrat de blocs per admetre l'ECB

1
const crypto.ECB = 1;

CBC

Especifiqueu el mode de treball de xifrat 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 xifratge de blocs per admetre OFB

1
const crypto.OFB = 5;

CTR

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

1
const crypto.CTR = 6;

GCM

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

1
const crypto.GCM = 7;

STREAM

Especifiqueu 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 xifrat 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;