Module basismodule

modulecrypto

cryptoDe module is fibjseen ingebouwde coderingsalgoritmemodule. Het biedt symmetrische encryptie, asymmetrische encryptie, digest-algoritme, cryptografische generator van willekeurige getallen en andere functies. Voor gebruik require('crypto')moet de module worden geladen via .

In cryptode module zijn veel objecten beschikbaar, zoals:

  • PKey: Asymmetrisch versleutelingsalgoritme-object
  • X509Cert: Object dat wordt gebruikt om X.509-certificaten te manipuleren
  • Cipher: Object dat wordt gebruikt om symmetrische codering te implementeren
  • Digest: Object dat wordt gebruikt om het digest-algoritme te implementeren

Voordat u het versleutelingsalgoritme gebruikt, moet u een sleutelobject maken. In het volgende AESvoorbeeld wordt bijvoorbeeld een sleutelobject gemaakt:

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

Gebruik vervolgens Cipherhet object om de leesbare tekst te coderen:

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

AESIn het bovenstaande voorbeeld wordt een gecodeerd Cipherobject gemaakt , encryptwordt de leesbare tekst gecodeerd met behulp van de methode en wordt het coderingsresultaat geretourneerd.

Naast symmetrische encryptie-algoritmen cryptokan de module ook asymmetrische encryptie-algoritmen en digest-algoritmen ondersteunen. Het volgende voorbeeld is bijvoorbeeld code die gebruikmaakt van PKeyen Digestobjecten gebruikt om SHA256-codering te implementeren:

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

In het bovenstaande voorbeeld wordt eerst een privésleutelbestand gelezen en worden de invoergegevens voorbereid. Vervolgens Digestwordt een SHA256-object gemaakt en updateworden de gegevens met behulp van de methode aan de Hash-berekening toegevoegd. Nadat de berekening is voltooid, gebruikt u privateKey.signde methode om het handtekeningresultaat te ondertekenen en uit te voeren.

Samenvattend cryptobiedt de module een verscheidenheid aan encryptie-algoritmen, digest-algoritmen en gerelateerde objecten. Deze functies kunnen ons helpen verschillende beveiligingsvereisten te bereiken, zoals symmetrische en asymmetrische encryptie, digitale handtekeningen en encryptieverificatie.

voorwerp

Cipher

CipherConstructeur, zieCipher

1
Cipher crypto.Cipher;

PKey

PKeyConstructeur, ziePKey

1
PKey crypto.PKey;

ECKey

ECKeyConstructeur, zieECKey

1
ECKey crypto.ECKey;

BlsKey

BlsKeyConstructeur, zieBlsKey

1
BlsKey crypto.BlsKey;

X509Cert

X509CertConstructeur, zieX509Cert

1
X509Cert crypto.X509Cert;

X509Crl

X509CrlConstructeur, zieX509Crl

1
X509Crl crypto.X509Crl;

X509Req

X509ReqConstructeur, zieX509Req

1
X509Req crypto.X509Req;

statische functie

createHash

Creëert een informatiesamenvattingsobject op basis van de opgegeven algoritmenaam

1
static Digest crypto.createHash(String algo);

Oproepparameters:

  • algo: String, die het algoritme van het informatiesamenvattingsobject specificeert

Resultaten retourneren:

  • Digest, retourneert het informatiesamenvattingsobject

createHmac

Creëert een hmac-informatiesamenvattingsobject op basis van de opgegeven algoritmenaam

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

Oproepparameters:

  • algo: String, die het algoritme van het informatiesamenvattingsobject specificeert
  • key:Buffer, binaire ondertekeningssleutel

Resultaten retourneren:

  • Digest, retourneert het informatiesamenvattingsobject

loadCert

Laad een certificaat in CRT/PEM/DER-formaat, dat meerdere keren kan worden opgeroepen

1
static X509Cert crypto.loadCert(String filename);

Oproepparameters:

  • filename: String, certificaatbestandsnaam

Resultaten retourneren:

  • X509Cert, retourneert een object dat het certificaat bevat

loadCrl

Laad een intrekkingscertificaat in PEM/DER-formaat, dat meerdere keren kan worden opgeroepen

1
static X509Crl crypto.loadCrl(String filename);

Oproepparameters:

  • filename: String, bestandsnaam van het intrekkingscertificaat

Resultaten retourneren:

  • X509Crl, retourneert een object dat het ingetrokken certificaat bevat

loadReq

Laad een certificaatverzoek in PEM/DER-formaat, dat meerdere keren kan worden aangeroepen

1
static X509Req crypto.loadReq(String filename);

Oproepparameters:

  • filename: String, bestandsnaam van certificaataanvraag

Resultaten retourneren:

  • X509Req, retourneert een object dat het aangevraagde certificaat bevat

loadPKey

Laad een asymmetrische publieke of private sleutel in CRT/PEM/DER-formaat

1
static PKey crypto.loadPKey(String filename);

Oproepparameters:

  • filename: Tekenreeks, openbare sleutel of bestandsnaam van privésleutel

Resultaten retourneren:


randomBytes

Genereer willekeurige getallen van een opgegeven grootte met behulp van de havege-generator

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

Oproepparameters:

  • size: Geheel getal, specificeert de grootte van het gegenereerde willekeurige getal

Resultaten retourneren:

  • Buffer, retourneert het gegenereerde willekeurige getal

simpleRandomBytes

Genereer willekeurige getallen met een lage sterkte van een opgegeven grootte, met behulp van een snel algoritme

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

Oproepparameters:

  • size: Geheel getal, specificeert de grootte van het gegenereerde willekeurige getal

Resultaten retourneren:

  • Buffer, retourneert het gegenereerde willekeurige getal

pseudoRandomBytes

Genereer pseudo-willekeurige getallen van een gespecificeerde grootte met behulp van de entropiegenerator

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

Oproepparameters:

  • size: Geheel getal, specificeert de grootte van het gegenereerde willekeurige getal

Resultaten retourneren:

  • Buffer, retourneert het gegenereerde willekeurige getal

randomFill

Gebruik willekeurige getallen om het opgegeven getal in te vullenBuffer, met behulp van de havege-generator

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

Oproepparameters:

  • buffer:Buffer, specificeer het gegenereerdeBuffer
  • offset: Geheel getal, specificeert de startoffset, de standaardwaarde is 0
  • size: Geheel getal, specificeert de grootte van het gegenereerde willekeurige getal, de standaardwaarde is buffer.length - offset

Resultaten retourneren:

  • Buffer, retourneert het gegenereerde willekeurige getal

randomArt

Genereert een visueel karakterbeeld van de gegeven gegevens

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

Oproepparameters:

  • data:Buffer, geef de gegevens op die moeten worden weergegeven
  • title: String, specificeert de titel van de tekenafbeelding. Tekens van meerdere bytes veroorzaken breedtefouten.
  • size: geheel getal, tekenafbeeldingsgrootte

Resultaten retourneren:

  • String, retourneert de gegenereerde visuele tekenreeksafbeelding

generateKey

Genereer een persoonlijke RSA-sleutel

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

Oproepparameters:

  • size: Geheel getal, specificeert de lengte van de RSA-sleutel, in bits

Resultaten retourneren:

  • PKey, retourneert een object dat de gegenereerde privésleutel bevat

Genereer een privésleutel met een elliptische curve

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

Oproepparameters:

  • curve: String, specificeert de vooraf ingestelde elliptische curve, de standaardwaarde is 'secp256r1'

Resultaten retourneren:

  • PKey, retourneert een object dat de gegenereerde privésleutel bevat

curve Optionele curven omvatten de volgende NIST-curven en aliassen:

kromme Alias
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'

Andere ondersteunde curven zijn onder meer: ​​"brainpoolP512r1", "brainpoolP384r1", "secp256k1", "P-256K", "brainpoolP256r1", "sm2p256r1", "SM2", "Ed25519", "BLS12381_G1", "BLS12381_G2"


pbkdf1

Genereer de vereiste binaire sleutel op basis van het platte tekstwachtwoord op basis van pbkdf1

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

Oproepparameters:

  • password:Buffer, geef het wachtwoord op dat u wilt gebruiken
  • salt:Buffer, specificeer het zout dat door hmac wordt gebruikt
  • iterations: geheel getal, geef het aantal iteraties op
  • size: geheel getal, geef de sleutelgrootte op
  • algo: Geheel getal, specificeer dehashalgoritme, ziehashmodule

Resultaten retourneren:

  • Buffer, retourneert de gegenereerde binaire sleutel

Genereer de vereiste binaire sleutel op basis van het platte tekstwachtwoord op basis van pbkdf1

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

Oproepparameters:

  • password:Buffer, geef het wachtwoord op dat u wilt gebruiken
  • salt:Buffer, specificeer het zout dat door hmac wordt gebruikt
  • iterations: geheel getal, geef het aantal iteraties op
  • size: geheel getal, geef de sleutelgrootte op
  • algoName: String, specificeert dehashalgoritme, ziehashmodule

Resultaten retourneren:

  • Buffer, retourneert de gegenereerde binaire sleutel

pbkdf2

Genereer de vereiste binaire sleutel op basis van het platte tekstwachtwoord volgens rfc2898

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

Oproepparameters:

  • password:Buffer, geef het wachtwoord op dat u wilt gebruiken
  • salt:Buffer, specificeer het zout dat door hmac wordt gebruikt
  • iterations: geheel getal, geef het aantal iteraties op
  • size: geheel getal, geef de sleutelgrootte op
  • algo: Geheel getal, specificeer dehashalgoritme, ziehashmodule

Resultaten retourneren:

  • Buffer, retourneert de gegenereerde binaire sleutel

Genereer de vereiste binaire sleutel op basis van het platte tekstwachtwoord volgens rfc2898

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

Oproepparameters:

  • password:Buffer, geef het wachtwoord op dat u wilt gebruiken
  • salt:Buffer, specificeer het zout dat door hmac wordt gebruikt
  • iterations: geheel getal, geef het aantal iteraties op
  • size: geheel getal, geef de sleutelgrootte op
  • algoName: String, specificeert dehashalgoritme, ziehashmodule

Resultaten retourneren:

  • Buffer, retourneert de gegenereerde binaire sleutel

getHashes

Krijg ondersteuning voor cryptomoduleshash(Abstracte) algoritmen, zoals 'md5', 'sha224'

1
static Array crypto.getHashes();

Resultaten retourneren:

  • Array, retourneert fibjs ondersteundhashalgoritme-array

constante

AES

Specificeer symmetrisch encryptie-algoritme AES, ondersteunt 128, 192, 256-bit sleutel, blokcodering werkmodus ondersteunt ECB, CBC, CFB128, CTR, GCM, CCM, XTS

1
const crypto.AES = 1;

DES

Specificeert het symmetrische versleutelingsalgoritme DES, ondersteunt een 64-bits sleutel en de blokcoderingswerkmodus ondersteunt ECB, CBC

1
const crypto.DES = 2;

DES_EDE3

Specificeer symmetrisch encryptie-algoritme DES-EDE3, ondersteunt 192-bit sleutel, blokcodering werkmodus ondersteunt ECB, CBC

1
const crypto.DES_EDE3 = 3;

CAMELLIA

Specificeer symmetrisch encryptie-algoritme CAMELLIA, ondersteunt 128, 192, 256-bit sleutel, blokcodering werkmodus ondersteunt ECB, CBC, CFB128, CTR, GCM, CCM

1
const crypto.CAMELLIA = 4;

ARIA

Specificeer symmetrisch encryptie-algoritme ARIA, ondersteunt 128, 192, 256-bit sleutel, blokcodering werkmodus ondersteunt ECB, CBC, CFB128, CTR, GCM, CCM

1
const crypto.ARIA = 5;

CHACHA20

Specificeer het symmetrische coderingsalgoritme CHACHA20, ondersteunt een 256-bits sleutel en de werkmodus van het blokcijfer ondersteunt POLY1305

1
const crypto.CHACHA20 = 6;

SM4

Specificeer het symmetrische encryptie-algoritme SM4, de blokcoderingswerkmodus ondersteunt ECB, CBC

1
const crypto.SM4 = 7;

ECB

Specificeer de werkmodus voor blokcodering ter ondersteuning van ECB

1
const crypto.ECB = 1;

CBC

Specificeer de werkmodus voor blokcodering om CBC te ondersteunen

1
const crypto.CBC = 2;

CFB64

Geef de blokcoderingswerkmodus op om CFB64 te ondersteunen

1
const crypto.CFB64 = 3;

CFB128

Specificeer de werkmodus voor blokcodering ter ondersteuning van CFB128

1
const crypto.CFB128 = 4;

OFB

Specificeer de werkmodus voor blokcodering om OFB te ondersteunen

1
const crypto.OFB = 5;

CTR

Specificeer de werkmodus voor blokcodering om CTR te ondersteunen

1
const crypto.CTR = 6;

GCM

Geef de werkmodus voor blokcodering op om GCM te ondersteunen

1
const crypto.GCM = 7;

STREAM

Geef de streamcoderingsmodus op

1
const crypto.STREAM = 8;

CCM

Specificeer de werkmodus voor blokcodering om CCM te ondersteunen

1
const crypto.CCM = 9;

XTS

Specificeer de werkmodus voor blokcodering om XTS te ondersteunen

1
const crypto.XTS = 10;

POLY1305

Geef de blokcoderingswerkmodus op om POLY1305 te ondersteunen

1
const crypto.POLY1305 = 11;

PKCS7

Geef de opvulmodus op als PKCS7

1
const crypto.PKCS7 = 0;

ONE_AND_ZEROS

Geef de vulmodus op als ONE_AND_ZEROS

1
const crypto.ONE_AND_ZEROS = 1;

ZEROS_AND_LEN

Geef de vulmodus op als ZEROS_AND_LEN

1
const crypto.ZEROS_AND_LEN = 2;

ZEROS

Specificeer de vulmodus als NUL

1
const crypto.ZEROS = 3;

NOPADDING

Geef de opvulmodus op als NOPADDING

1
const crypto.NOPADDING = 4;