Modulo modulo base

modulocrypto

cryptoIl modulo è fibjsun modulo di algoritmo di crittografia integrato. Fornisce crittografia simmetrica, crittografia asimmetrica, algoritmo digest, generatore di numeri casuali crittografici e altre funzioni. Prima dell'uso, require('crypto')il modulo deve essere caricato tramite .

Nel cryptomodulo sono disponibili molti oggetti, come ad esempio:

  • PKey: oggetto algoritmo di crittografia asimmetrica
  • X509Cert: oggetto utilizzato per manipolare i certificati X.509
  • Cipher: oggetto utilizzato per implementare la crittografia simmetrica
  • Digest: oggetto utilizzato per implementare l'algoritmo digest

Prima di utilizzare l'algoritmo di crittografia, è necessario creare un oggetto chiave. Ad esempio, l' AESesempio seguente crea un oggetto chiave:

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

Successivamente, utilizza Cipherl'oggetto per crittografare il testo in chiaro:

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

Nell'esempio precedente, viene creato un oggetto AEScrittografato , il testo in chiaro viene crittografato utilizzando il metodo e viene restituito il risultato della crittografia.Cipherencrypt

Oltre agli algoritmi di crittografia simmetrica, cryptoil modulo può supportare anche algoritmi di crittografia asimmetrica e algoritmi digest. Ad esempio, l'esempio seguente è il codice che utilizza PKeye Digestoggetti per implementare la crittografia 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

Nell'esempio precedente, viene prima letto un file di chiave privata e poi vengono preparati i dati di input. Quindi, Digestviene creato un oggetto SHA256 e updatei dati vengono aggiunti al calcolo Hash utilizzando il metodo. Una volta completato il calcolo, utilizzare privateKey.signil metodo per firmare e restituire il risultato della firma.

Riassumendo, cryptoil modulo fornisce una varietà di algoritmi di crittografia, algoritmi digest e oggetti correlati. Queste funzioni possono aiutarci a soddisfare vari requisiti di sicurezza, come la crittografia simmetrica e asimmetrica, le firme digitali e la verifica della crittografia.

oggetto

Cipher

CipherCostruttore, vediCipher

1
Cipher crypto.Cipher;

PKey

PKeyCostruttore, vediPKey

1
PKey crypto.PKey;

ECKey

ECKeyCostruttore, vediECKey

1
ECKey crypto.ECKey;

BlsKey

BlsKeyCostruttore, vediBlsKey

1
BlsKey crypto.BlsKey;

X509Cert

X509CertCostruttore, vediX509Cert

1
X509Cert crypto.X509Cert;

X509Crl

X509CrlCostruttore, vediX509Crl

1
X509Crl crypto.X509Crl;

X509Req

X509ReqCostruttore, vediX509Req

1
X509Req crypto.X509Req;

funzione statica

createHash

Crea un oggetto di riepilogo delle informazioni in base al nome dell'algoritmo specificato

1
static Digest crypto.createHash(String algo);

Parametri di chiamata:

  • algo: Stringa, che specifica l'algoritmo dell'oggetto digest delle informazioni

Risultati restituiti:

  • Digest, restituisce l'oggetto di riepilogo delle informazioni

createHmac

Crea un oggetto di riepilogo delle informazioni hmac in base al nome dell'algoritmo specificato

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

Parametri di chiamata:

  • algo: Stringa, che specifica l'algoritmo dell'oggetto digest delle informazioni
  • key:Buffer, chiave di firma binaria

Risultati restituiti:

  • Digest, restituisce l'oggetto di riepilogo delle informazioni

loadCert

Carica un certificato in formato CRT/PEM/DER, richiamabile più volte

1
static X509Cert crypto.loadCert(String filename);

Parametri di chiamata:

  • filename: stringa, nome del file del certificato

Risultati restituiti:

  • X509Cert, restituisce un oggetto contenente il certificato

loadCrl

Carica un certificato di revoca in formato PEM/DER, richiamabile più volte

1
static X509Crl crypto.loadCrl(String filename);

Parametri di chiamata:

  • filename: stringa, nome file del certificato di revoca

Risultati restituiti:

  • X509Crl, restituisce un oggetto contenente il certificato revocato

loadReq

Carica una richiesta di certificato in formato PEM/DER, richiamabile più volte

1
static X509Req crypto.loadReq(String filename);

Parametri di chiamata:

  • filename: stringa, nome del file di richiesta del certificato

Risultati restituiti:

  • X509Req, restituisce un oggetto contenente il certificato richiesto

loadPKey

Carica una chiave pubblica o privata asimmetrica in formato CRT/PEM/DER

1
static PKey crypto.loadPKey(String filename);

Parametri di chiamata:

  • filename: nome del file di stringa, chiave pubblica o chiave privata

Risultati restituiti:


randomBytes

Genera numeri casuali di dimensione specificata utilizzando il generatore di hasge

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

Parametri di chiamata:

  • size: Intero, specifica la dimensione del numero casuale generato

Risultati restituiti:

  • Buffer, restituisce il numero casuale generato

simpleRandomBytes

Genera numeri casuali a bassa intensità di una dimensione specificata, utilizzando un algoritmo veloce

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

Parametri di chiamata:

  • size: Intero, specifica la dimensione del numero casuale generato

Risultati restituiti:

  • Buffer, restituisce il numero casuale generato

pseudoRandomBytes

Genera numeri pseudo-casuali di dimensione specificata, utilizzando il generatore di entropia

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

Parametri di chiamata:

  • size: Intero, specifica la dimensione del numero casuale generato

Risultati restituiti:

  • Buffer, restituisce il numero casuale generato

randomFill

Utilizza numeri casuali per riempire lo specificatoBuffer, utilizzando il generatore di havege

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

Parametri di chiamata:

  • buffer:Buffer, specificare il file generatoBuffer
  • offset: Numero intero, specifica l'offset iniziale, il valore predefinito è 0
  • size: Numero intero, specifica la dimensione del numero casuale generato, il valore predefinito è buffer.length - offset

Risultati restituiti:

  • Buffer, restituisce il numero casuale generato

randomArt

Genera un'immagine di carattere visivo dei dati forniti

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

Parametri di chiamata:

  • data:Buffer, specificare i dati da visualizzare
  • title: stringa, specifica il titolo dell'immagine del carattere. I caratteri multibyte causeranno errori di larghezza.
  • size: numero intero, dimensione dell'immagine del carattere

Risultati restituiti:

  • String, restituisce l'immagine della stringa visiva generata

generateKey

Genera una chiave privata RSA

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

Parametri di chiamata:

  • size: numero intero, specifica la lunghezza della chiave RSA, in bit

Risultati restituiti:

  • PKey, restituisce un oggetto contenente la chiave privata generata

Genera una chiave privata con curva ellittica

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

Parametri di chiamata:

  • curve: String, specifica la curva ellittica preimpostata, il valore predefinito è 'secp256r1'

Risultati restituiti:

  • PKey, restituisce un oggetto contenente la chiave privata generata

curva Le curve opzionali includono curve e alias NIST come segue:

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

Altre curve supportate includono: "brainpoolP512r1", "brainpoolP384r1", "secp256k1", "P-256K", "brainpoolP256r1", "sm2p256r1", "SM2", "Ed25519", "BLS12381_G1", "BLS12381_G2"


pbkdf1

Genera la chiave binaria richiesta in base alla password in testo semplice basata su pbkdf1

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

Parametri di chiamata:

  • password:Buffer, specificare la password da utilizzare
  • salt:Buffer, specificare il sale utilizzato da hmac
  • iterations: Intero, specificare il numero di iterazioni
  • size: numero intero, specificare la dimensione della chiave
  • algo: numero intero, specificare ilhashalgoritmo, vedihashmodulo

Risultati restituiti:

  • Buffer, restituisce la chiave binaria generata

Genera la chiave binaria richiesta in base alla password in testo semplice basata su pbkdf1

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

Parametri di chiamata:

  • password:Buffer, specificare la password da utilizzare
  • salt:Buffer, specificare il sale utilizzato da hmac
  • iterations: Intero, specificare il numero di iterazioni
  • size: numero intero, specificare la dimensione della chiave
  • algoName: Stringa, specifica ilhashalgoritmo, vedihashmodulo

Risultati restituiti:

  • Buffer, restituisce la chiave binaria generata

pbkdf2

Genera la chiave binaria richiesta in base alla password in testo semplice secondo rfc2898

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

Parametri di chiamata:

  • password:Buffer, specificare la password da utilizzare
  • salt:Buffer, specificare il sale utilizzato da hmac
  • iterations: Intero, specificare il numero di iterazioni
  • size: numero intero, specificare la dimensione della chiave
  • algo: numero intero, specificare ilhashalgoritmo, vedihashmodulo

Risultati restituiti:

  • Buffer, restituisce la chiave binaria generata

Genera la chiave binaria richiesta in base alla password in testo semplice secondo rfc2898

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

Parametri di chiamata:

  • password:Buffer, specificare la password da utilizzare
  • salt:Buffer, specificare il sale utilizzato da hmac
  • iterations: Intero, specificare il numero di iterazioni
  • size: numero intero, specificare la dimensione della chiave
  • algoName: Stringa, specifica ilhashalgoritmo, vedihashmodulo

Risultati restituiti:

  • Buffer, restituisce la chiave binaria generata

getHashes

Ottieni il supporto del modulo crittograficohash(Abstract) Algoritmi, come 'md5', 'sha224'

1
static Array crypto.getHashes();

Risultati restituiti:

  • Array, restituisce fibj supportatihashmatrice dell'algoritmo

costante

AES

Specifica l'algoritmo di crittografia simmetrica AES, supporta la chiave a 128, 192, 256 bit, la modalità di funzionamento della crittografia a blocchi supporta ECB, CBC, CFB128, CTR, GCM, CCM, XTS

1
const crypto.AES = 1;

DES

Specifica l'algoritmo di crittografia simmetrica DES, supporta la chiave a 64 bit e la modalità di funzionamento della crittografia a blocchi supporta ECB, CBC

1
const crypto.DES = 2;

DES_EDE3

Specifica l'algoritmo di crittografia simmetrica DES-EDE3, supporta la chiave a 192 bit, la modalità di funzionamento della crittografia a blocchi supporta ECB, CBC

1
const crypto.DES_EDE3 = 3;

CAMELLIA

Specifica l'algoritmo di crittografia simmetrica CAMELLIA, supporta la chiave a 128, 192, 256 bit, la modalità di funzionamento della crittografia a blocchi supporta ECB, CBC, CFB128, CTR, GCM, CCM

1
const crypto.CAMELLIA = 4;

ARIA

Specifica l'algoritmo di crittografia simmetrica ARIA, supporta la chiave a 128, 192, 256 bit, la modalità di funzionamento della crittografia a blocchi supporta ECB, CBC, CFB128, CTR, GCM, CCM

1
const crypto.ARIA = 5;

CHACHA20

Specificare l'algoritmo di crittografia simmetrica CHACHA20, supportare la chiave a 256 bit e la modalità di funzionamento della crittografia a blocchi supporta POLY1305

1
const crypto.CHACHA20 = 6;

SM4

Specificare l'algoritmo di crittografia simmetrica SM4, la modalità di funzionamento della crittografia a blocchi supporta ECB, CBC

1
const crypto.SM4 = 7;

ECB

Specificare la modalità di funzionamento della crittografia a blocchi per supportare la BCE

1
const crypto.ECB = 1;

CBC

Specificare la modalità di funzionamento della crittografia a blocchi per supportare CBC

1
const crypto.CBC = 2;

CFB64

Specificare la modalità di funzionamento della crittografia a blocchi per supportare CFB64

1
const crypto.CFB64 = 3;

CFB128

Specificare la modalità di funzionamento della crittografia a blocchi per supportare CFB128

1
const crypto.CFB128 = 4;

OFB

Specificare la modalità di funzionamento della crittografia a blocchi per supportare OFB

1
const crypto.OFB = 5;

CTR

Specificare la modalità di funzionamento della crittografia a blocchi per supportare CTR

1
const crypto.CTR = 6;

GCM

Specificare la modalità di funzionamento della crittografia a blocchi per supportare GCM

1
const crypto.GCM = 7;

STREAM

Specificare la modalità di crittografia a flusso

1
const crypto.STREAM = 8;

CCM

Specificare la modalità di funzionamento della crittografia a blocchi per supportare CCM

1
const crypto.CCM = 9;

XTS

Specificare la modalità di funzionamento della crittografia a blocchi per supportare XTS

1
const crypto.XTS = 10;

POLY1305

Specificare la modalità di funzionamento della crittografia a blocchi per supportare POLY1305

1
const crypto.POLY1305 = 11;

PKCS7

Specificare la modalità di riempimento come PKCS7

1
const crypto.PKCS7 = 0;

ONE_AND_ZEROS

Specificare la modalità di riempimento come ONE_AND_ZEROS

1
const crypto.ONE_AND_ZEROS = 1;

ZEROS_AND_LEN

Specificare la modalità di riempimento come ZEROS_AND_LEN

1
const crypto.ZEROS_AND_LEN = 2;

ZEROS

Specificare la modalità di riempimento come ZERI

1
const crypto.ZEROS = 3;

NOPADDING

Specificare la modalità di riempimento come NOPADDING

1
const crypto.NOPADDING = 4;