Module basismodule

module cryptovaluta

cryptomodule is een fibjsingebouwde encryptie-algoritmemodule. Het biedt functies zoals symmetrische codering, asymmetrische codering, digest-algoritme en cryptografische generator van willekeurige getallen. Voor gebruik moet de module require('crypto')worden geladen .

In cryptode module zijn veel objecten beschikbaar, zoals:

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

Voordat u het coderingsalgoritme gebruikt, moet u een sleutelobject maken, zoals het volgende voorbeeld van het maken van een AESsleutelobject :

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 versleutelen:

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

In het bovenstaande voorbeeld wordt een AESversleuteld Cipher, de leesbare tekst wordt versleuteld met behulp van encryptde methode en het versleutelde resultaat wordt geretourneerd.

Naast symmetrische encryptie-algoritmen cryptokan de module ook asymmetrische encryptie-algoritmen en digest-algoritmen ondersteunen. Het volgende voorbeeld is bijvoorbeeld de code om SHA256-codering te implementeren PKeymet objecten en: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

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

Kortom, cryptode module biedt een verscheidenheid aan coderingsalgoritmen, samenvattingsalgoritmen en gerelateerde objecten. Deze functies kunnen ons helpen verschillende beveiligingsvereisten te bereiken, zoals symmetrische en asymmetrische codering, digitale handtekening en coderingsverificatie.

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

Maakt een infosummary-object op basis van de gegeven algoritmenaam

1
static Digest crypto.createHash(String algo);

Oproepparameters:

  • algo: String, specificeert het algoritme van het message digest-object

retour resultaat:

  • Digest, retourneert een berichtoverzichtsobject

createHmac

Maak een hmac info-overzichtsobject van de gegeven algoritmenaam

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

Oproepparameters:

  • algo: String, specificeert het algoritme van het message digest-object
  • key:Buffer, de binaire ondertekeningssleutel

retour resultaat:

  • Digest, retourneert een berichtoverzichtsobject

loadCert

Laad een certificaat in CRT/PEM/DER-indeling, dat meerdere keren kan worden aangeroepen

1
static X509Cert crypto.loadCert(String filename);

Oproepparameters:

  • filename: Tekenreeks, bestandsnaam certificaat

retour resultaat:

  • X509Cert, retourneert een object dat het certificaat bevat

loadCrl

Laad een ingetrokken certificaat in PEM/DER-indeling, dat meerdere keren kan worden aangeroepen

1
static X509Crl crypto.loadCrl(String filename);

Oproepparameters:

  • filename: Tekenreeks, bestandsnaam van ingetrokken certificaat

retour resultaat:

  • X509Crl, retourneert een object dat het ingetrokken certificaat bevat

loadReq

Laad een certificaataanvraag in PEM/DER-indeling, die meerdere keren kan worden aangeroepen

1
static X509Req crypto.loadReq(String filename);

Oproepparameters:

  • filename: Tekenreeks, bestandsnaam certificaataanvraag

retour resultaat:

  • X509Req, retourneert een object dat het gevraagde certificaat bevat

loadPKey

Laad een asymmetrische openbare of privésleutel in CRT/PEM/DER-indeling

1
static PKey crypto.loadPKey(String filename);

Oproepparameters:

  • filename: Bestandsnaam van tekenreeks, openbare sleutel of persoonlijke sleutel

retour resultaat:


randomBytes

Genereer een willekeurig getal van de opgegeven grootte met behulp van de havege-generator

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

Oproepparameters:

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

retour resultaat:

  • Buffer, retourneert het gegenereerde willekeurige getal

simpleRandomBytes

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

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

Oproepparameters:

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

retour resultaat:

  • Buffer, retourneert het gegenereerde willekeurige getal

pseudoRandomBytes

Genereer een pseudo-willekeurig getal van de opgegeven grootte met behulp van de entropiegenerator

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

Oproepparameters:

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

retour resultaat:

  • Buffer, retourneert het gegenereerde willekeurige getal

randomFill

Vul de opgegeven met willekeurige getallenBuffer, 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, met vermelding van het gegenereerdeBuffer
  • offset: geheel getal, specificeer de beginoffset, de standaardwaarde is 0
  • size: Integer, specificeert de grootte van het gegenereerde willekeurige getal, de standaardwaarde is buffer.length - offset

retour resultaat:

  • Buffer, retourneert het gegenereerde willekeurige getal

randomArt

Genereer een visueel karakterbeeld van de gegeven gegevens

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

Oproepparameters:

  • data:Buffer, specificeert de gegevens die moeten worden weergegeven
  • title: String, Specificeert de titel van de karakterafbeelding, karakters van meerdere bytes zullen breedtefouten veroorzaken
  • size: geheel getal, afbeeldingsgrootte van tekens

retour resultaat:

  • String, retourneert de resulterende gevisualiseerde tekenreeksafbeelding

generateKey

Genereer een persoonlijke RSA-sleutel

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

Oproepparameters:

  • size: Integer, specificeer de lengte van de RSA-sleutel in bits

retour resultaat:

  • PKey, retourneert een object dat de gegenereerde persoonlijke 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'

retour resultaat:

  • PKey, retourneert een object dat de gegenereerde persoonlijke sleutel bevat

curve Optionele curven omvatten NIST-curven en aliassen als volgt:

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: "brainpoolP512r1", "brainpoolP384r1", "secp256k1", "P-256K", "brainpoolP256r1", "sm2p256r1", "SM2", "Ed25519", "BLS12381_G1", "BLS12381_G2"


pbkdf1

Genereer volgens pbkdf1 de vereiste binaire sleutel volgens het leesbare wachtwoord

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 te gebruiken wachtwoord op
  • salt:Buffer, specificeert het zout dat wordt gebruikt door hmac
  • iterations: Integer, specificeert het aantal iteraties
  • size: geheel getal, specificeert de sleutelgrootte
  • algo: geheel getal, specificeert dehashalgoritme, ziehashmoduul

retour resultaat:

  • Buffer, retourneert de gegenereerde binaire sleutel

Genereer volgens pbkdf1 de vereiste binaire sleutel volgens het leesbare wachtwoord

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 te gebruiken wachtwoord op
  • salt:Buffer, specificeert het zout dat wordt gebruikt door hmac
  • iterations: Integer, specificeert het aantal iteraties
  • size: geheel getal, specificeert de sleutelgrootte
  • algoName: Tekenreeks, specificeert dehashalgoritme, ziehashmoduul

retour resultaat:

  • Buffer, retourneert de gegenereerde binaire sleutel

pbkdf2

Genereer volgens rfc2898 de vereiste binaire sleutel volgens het leesbare wachtwoord

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 te gebruiken wachtwoord op
  • salt:Buffer, specificeert het zout dat wordt gebruikt door hmac
  • iterations: Integer, specificeert het aantal iteraties
  • size: geheel getal, specificeert de sleutelgrootte
  • algo: geheel getal, specificeert dehashalgoritme, ziehashmoduul

retour resultaat:

  • Buffer, retourneert de gegenereerde binaire sleutel

Genereer volgens rfc2898 de vereiste binaire sleutel volgens het leesbare wachtwoord

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 te gebruiken wachtwoord op
  • salt:Buffer, specificeert het zout dat wordt gebruikt door hmac
  • iterations: Integer, specificeert het aantal iteraties
  • size: geheel getal, specificeert de sleutelgrootte
  • algoName: Tekenreeks, specificeert dehashalgoritme, ziehashmoduul

retour resultaat:

  • Buffer, retourneert de gegenereerde binaire sleutel

getHashes

Verkrijg degenen die worden ondersteund door de cryptomodulehash(abstract) algoritme, zoals 'md5', 'sha224'

1
static Array crypto.getHashes();

retour resultaat:

  • Array, retourneert fibjs ondersteundhashalgoritme array

constante

AES

Specificeer symmetrisch coderingsalgoritme AES, ondersteuning voor 128, 192, 256-bits sleutel, blokcoderingswerkmodus ondersteunt ECB, CBC, CFB128, CTR, GCM, CCM, XTS

1
const crypto.AES = 1;

DES

Specificeer symmetrisch coderingsalgoritme DES, ondersteuning voor 64-bits sleutel, blokcoderingswerkmodus ondersteunt ECB, CBC

1
const crypto.DES = 2;

DES_EDE3

Specificeer symmetrisch coderingsalgoritme DES-EDE3, ondersteuning voor 192-bits sleutel, blokcoderingswerkmodus ondersteunt ECB, CBC

1
const crypto.DES_EDE3 = 3;

CAMELLIA

Specificeer symmetrisch versleutelingsalgoritme CAMELLIA, ondersteuning 128, 192, 256-bits sleutel, blokcijferwerkmodus ondersteunt ECB, CBC, CFB128, CTR, GCM, CCM

1
const crypto.CAMELLIA = 4;

ARIA

Specificeer symmetrisch coderingsalgoritme ARIA, ondersteuning voor 128, 192, 256-bits sleutel, blokcijferwerkmodus ondersteunt ECB, CBC, CFB128, CTR, GCM, CCM

1
const crypto.ARIA = 5;

CHACHA20

Specificeer het symmetrische versleutelingsalgoritme CHACHA20, ondersteun 256-bits sleutel en ondersteun POLY1305 in werkmodus voor blokcodering

1
const crypto.CHACHA20 = 6;

SM4

Specificeer het symmetrische versleutelingsalgoritme SM4, blokcijferwerkmodus ondersteunt ECB, CBC

1
const crypto.SM4 = 7;

ECB

Specificeer de werkmodus voor blokcodering om ECB te ondersteunen

1
const crypto.ECB = 1;

CBC

Specificeer de werkmodus voor blokcodering om CBC te ondersteunen

1
const crypto.CBC = 2;

CFB64

Specificeer de werkmodus voor blokcodering om CFB64 te ondersteunen

1
const crypto.CFB64 = 3;

CFB128

Specificeer de werkmodus voor blokcodering om CFB128 te ondersteunen

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

Specificeer de werkmodus voor blokcodering om GCM te ondersteunen

1
const crypto.GCM = 7;

STREAM

Specificeert de stroomcoderingsmodus

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

Specificeer de werkmodus voor blokcodering om POLY1305 te ondersteunen

1
const crypto.POLY1305 = 11;

PKCS7

Geef 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

Geef de vulmodus op als NUL

1
const crypto.ZEROS = 3;

NOPADDING

Geef opvulmodus op als NOPADDING

1
const crypto.NOPADDING = 4;