modulocrypto
crypto
Il modulo è fibjs
un 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 crypto
modulo sono disponibili molti oggetti, come ad esempio:
PKey
: oggetto algoritmo di crittografia asimmetricaX509Cert
: oggetto utilizzato per manipolare i certificati X.509Cipher
: oggetto utilizzato per implementare la crittografia simmetricaDigest
: oggetto utilizzato per implementare l'algoritmo digest
Prima di utilizzare l'algoritmo di crittografia, è necessario creare un oggetto chiave. Ad esempio, l' AES
esempio seguente crea un oggetto chiave:
1
2const crypto = require('crypto');
const key = crypto.randomBytes(16); // generate a 16-byte random key
Successivamente, utilizza Cipher
l'oggetto per crittografare il testo in chiaro:
1
2
3
4const 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 AES
crittografato , il testo in chiaro viene crittografato utilizzando il metodo e viene restituito il risultato della crittografia.Cipher
encrypt
Oltre agli algoritmi di crittografia simmetrica, crypto
il modulo può supportare anche algoritmi di crittografia asimmetrica e algoritmi digest. Ad esempio, l'esempio seguente è il codice che utilizza PKey
e Digest
oggetti per implementare la crittografia SHA256:
1
2
3
4
5
6const 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, Digest
viene creato un oggetto SHA256 e update
i dati vengono aggiunti al calcolo Hash utilizzando il metodo. Una volta completato il calcolo, utilizzare privateKey.sign
il metodo per firmare e restituire il risultato della firma.
Riassumendo, crypto
il 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
1Cipher crypto.Cipher;
PKey
1PKey crypto.PKey;
ECKey
1ECKey crypto.ECKey;
BlsKey
1BlsKey crypto.BlsKey;
X509Cert
X509CertCostruttore, vediX509Cert
1X509Cert crypto.X509Cert;
X509Crl
X509CrlCostruttore, vediX509Crl
1X509Crl crypto.X509Crl;
X509Req
X509ReqCostruttore, vediX509Req
1X509Req crypto.X509Req;
funzione statica
createHash
Crea un oggetto di riepilogo delle informazioni in base al nome dell'algoritmo specificato
1static 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
2static 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
1static 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
1static 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
1static 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
1static 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
1static 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
1static 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
1static 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
3static 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
3static 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
1static 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
1static 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
5static 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
5static 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
5static 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
5static 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'
1static 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
1const 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
1const 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
1const 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
1const 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
1const 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
1const crypto.CHACHA20 = 6;
SM4
Specificare l'algoritmo di crittografia simmetrica SM4, la modalità di funzionamento della crittografia a blocchi supporta ECB, CBC
1const crypto.SM4 = 7;
ECB
Specificare la modalità di funzionamento della crittografia a blocchi per supportare la BCE
1const crypto.ECB = 1;
CBC
Specificare la modalità di funzionamento della crittografia a blocchi per supportare CBC
1const crypto.CBC = 2;
CFB64
Specificare la modalità di funzionamento della crittografia a blocchi per supportare CFB64
1const crypto.CFB64 = 3;
CFB128
Specificare la modalità di funzionamento della crittografia a blocchi per supportare CFB128
1const crypto.CFB128 = 4;
OFB
Specificare la modalità di funzionamento della crittografia a blocchi per supportare OFB
1const crypto.OFB = 5;
CTR
Specificare la modalità di funzionamento della crittografia a blocchi per supportare CTR
1const crypto.CTR = 6;
GCM
Specificare la modalità di funzionamento della crittografia a blocchi per supportare GCM
1const crypto.GCM = 7;
STREAM
Specificare la modalità di crittografia a flusso
1const crypto.STREAM = 8;
CCM
Specificare la modalità di funzionamento della crittografia a blocchi per supportare CCM
1const crypto.CCM = 9;
XTS
Specificare la modalità di funzionamento della crittografia a blocchi per supportare XTS
1const crypto.XTS = 10;
POLY1305
Specificare la modalità di funzionamento della crittografia a blocchi per supportare POLY1305
1const crypto.POLY1305 = 11;
PKCS7
Specificare la modalità di riempimento come PKCS7
1const crypto.PKCS7 = 0;
ONE_AND_ZEROS
Specificare la modalità di riempimento come ONE_AND_ZEROS
1const crypto.ONE_AND_ZEROS = 1;
ZEROS_AND_LEN
Specificare la modalità di riempimento come ZEROS_AND_LEN
1const crypto.ZEROS_AND_LEN = 2;
ZEROS
Specificare la modalità di riempimento come ZERI
1const crypto.ZEROS = 3;
NOPADDING
Specificare la modalità di riempimento come NOPADDING
1const crypto.NOPADDING = 4;