Il modulo crittografico Node.js semplifica il processo di esecuzione delle operazioni crittografiche. Ecco come usarlo.

La crittografia è la pratica di proteggere le comunicazioni e i dati convertendoli in formati che solo le parti autorizzate possono decifrare.

Il Node.js cripto module è un modulo integrato che fornisce funzionalità crittografiche alle applicazioni Node.js. Offre una gamma di funzionalità crittografiche, tra cui crittografia, decrittografia, hashing, firme digitali, generazione sicura di numeri casuali e altro ancora.

Qui esplorerai le varie applicazioni del modulo crittografico Node.js e come puoi utilizzarle per proteggere le tue applicazioni.

Hashing

L'hashing è una tecnica crittografica unidirezionale che puoi utilizzare per trasformare una determinata chiave o stringa in un output di dimensioni fisse noto come hash o digest.

L'hashing è una funzione unidirezionale che significa che quando si esegue l'hashing di una chiave o di una stringa, non è possibile ottenere il valore originale dall'hash generato.

instagram viewer

Il modulo crittografico Node.js supporta varie funzioni di hashing come SHA-256, SHA-512, MD5 e altre.

Puoi eseguire l'hashing dei dati utilizzando il modulo crittografico createHash metodo, che accetta l'algoritmo di hashing come argomento. Il metodo restituisce a Hash oggetto, che è possibile utilizzare per eseguire l'hashing dei dati utilizzando l' aggiornamento E digerire metodi.

Per esempio:

cost cripto = richiedere('cripto');

cost dati = "parola d'ordine";

// creazione di un oggetto hash
cost hashAlgo = crypto.createHash('sha256')

// passando i dati da sottoporre ad hashing
hashAlgo.update (dati);

// Creazione dell'hash nel formato richiesto
cost hash = hashAlgo.digest('esadecimale');

consolare.tronco d'albero(`Hash: ${hash}`);

Nell'esempio sopra, il modulo crittografico createHash ha creato un oggetto di hashing con il sha256 algoritmo di hash. IL aggiornamento Il metodo sull'oggetto hash prende i dati di input e ne esegue l'hashing. Poi il digerire Il metodo accetta un parametro di codifica, specificando il formato del valore hash di output e restituisce l'hash nel formato specificato (esadecimale).

L'hashing è utile per verificare l'integrità dei dati, l'archiviazione delle password, le firme digitali e altro ancora.

Generazione di dati casuali

I dati casuali crittograficamente sicuri sono spesso richiesti in crittografia, giochi e test per vari casi d'uso.

Nella crittografia, puoi utilizzare dati casuali per generare chiavi, salt e vettori di inizializzazione per algoritmi di crittografia e decrittografia.

Nei giochi, puoi utilizzare dati casuali per generare livelli di gioco, personaggi, oggetti e altro per evitare imbrogli e assicurarti che il gioco non sia prevedibile.

Nei test, puoi usarlo per simulare scenari reali e casi limite.

Puoi generare dati casuali utilizzando il modulo crittografico Node.js byte casuali metodo. Questo metodo accetta un numero come argomento e restituisce un buffer di byte casuali.

Questo numero rappresenta la dimensione dei byte che il metodo genererà. Tuttavia, il numero non deve essere maggiore di 2³¹ - 1 (2147483647), ovvero il valore massimo che può essere rappresentato da un numero intero con segno a 32 bit.

Per esempio:

cost cripto = richiedere("cripto");

// crea byte casuali
cost randomBytes = cripto.randomBytes(32);

// converti in esadecimale
cost randomString = randomBytes.toString("esadecimale");

consolare.log (stringa casuale); //registra una stringa casuale nella console

Il blocco di codice precedente genera e registra una stringa casuale di 64 caratteri esadecimali (32 byte) nella console.

La generazione di dati casuali crittograficamente sicuri è importante perché garantisce che i dati casuali non siano prevedibili e che gli aggressori non possano manipolarli o indovinarli.

Crittografia e decrittografia in Node.js

La crittografia è il processo di trasformazione del testo normale in una forma illeggibile (testo cifrato) utilizzando un algoritmo di crittografia e una chiave segreta.

La decrittografia è il contrario della crittografia. È il processo di riconversione del testo cifrato in testo normale utilizzando lo stesso algoritmo e la stessa chiave di crittografia.

Il modulo crittografico Node.js fornisce supporto per vari algoritmi di crittografia e decrittografia, inclusi AES (Advanced Encryption Standard), DES (Data Encryption Standard) e RSA (Rivest – Shamir – Adleman).

Come crittografare i dati in Node.js utilizzando il modulo di crittografia

È possibile crittografare i dati utilizzando il file crypto.createCipheriv() metodo, che accetta l'algoritmo di crittografia, la chiave segreta e un vettore di inizializzazione come input. La chiave segreta dipende dall'algoritmo di crittografia che stai utilizzando. Ad esempio, per l'algoritmo aes-256 In CB.C modalità, la lunghezza della chiave deve essere di 32 byte.

Il metodo restituisce a Cifra oggetto, che è possibile utilizzare per crittografare i dati utilizzando l'estensione aggiornamento() E finale() metodi. I dati crittografati sono in genere rappresentati come una stringa esadecimale o un buffer.

Per esempio:

cost cripto = richiedere("cripto");

// Genera una chiave segreta per la crittografia e la decrittografia.
cost chiave segreta = crypto.randomBytes(32);

// Genera un vettore di inizializzazione
cost iv = cripto.randomBytes(16);

// dati da crittografare
cost testo normale = "Questo è un messaggio segreto";

// crea un oggetto cifrato
cost cifra = crypto.createCipheriv("aes-256-cbc", secretKey, iv);

// crittografa i dati
permettere testo crittografato = cipher.update (testo semplice, "utf-8", "esadecimale");

// finalizza la crittografia
testocrittografato += cipher.final("esadecimale");

consolare.log (testo crittografato);

L'esempio sopra mostra come è possibile crittografare il testo normale utilizzando aes-256 in modalità CBC utilizzando il modulo crittografico. Genera una chiave segreta e un vettore di inizializzazione utilizzando il crypto.randomBytes metodo. Quindi crea un oggetto cifrato utilizzando il file crypto.createCipheriv metodo e crittografa il messaggio di testo normale utilizzando il cipher.update E cifra.finale metodi.

Il risultato è una stringa esadecimale del messaggio crittografato, che è possibile decrittografare utilizzando la stessa chiave segreta e IV.

Come decrittografare i dati in Node.js utilizzando il modulo crittografico

Puoi decrittografare i dati crittografati utilizzando i moduli crittografici crypto.createDecipheriv() metodo, che accetta l'algoritmo di decrittazione, la chiave segreta e un vettore di inizializzazione come input. Il metodo restituisce a Decifrare oggetto, che è possibile utilizzare per decrittografare i dati utilizzando il file Decifra.aggiornamento() E Decipher.final() metodi.

Per esempio:

// crea un oggetto Decipher
cost decipher = crypto.createDecipheriv("aes-256-cbc", secretKey, iv);

// decodifica i dati
permettere decryptedText = decipher.update (encryptedText, "esadecimale", "utf-8");

// finalizza la decrittazione
decryptedText += decipher.final("utf-8");

consolare.log (testo decifrato); // Questo è un messaggio segreto

L'esempio sopra mostra come puoi decrittografare i dati crittografati utilizzando lo stesso algoritmo, chiave segreta e vettore di inizializzazione con cui li hai crittografati.

Crea un oggetto Decipher usando il file crypto.createDecipheriv metodo. Quindi decrittografa i dati utilizzando il file decipher.update metodo, che accetta i dati, la codifica di input e la codifica di output come argomenti. Infine, termina il processo di decrittazione utilizzando il file decipher.final metodo. La chiamata a questo metodo garantisce che l'oggetto Decipher possa più essere utilizzato per decrittografare i dati. Il risultato è una stringa di testo semplice.

La crittografia e la decrittografia sono fondamentali per proteggere i dati sensibili e mantenerne la riservatezza. Hanno varie applicazioni del mondo reale nell'e-commerce, nell'online banking, nell'archiviazione dei dati e altro ancora.

Altre applicazioni del modulo crittografico Node.js

Oltre all'hashing, alla generazione di dati casuali crittograficamente sicuri e alla crittografia e decrittografia, puoi anche utilizzare il file Modulo crittografico Node.js per firmare e verificare le firme digitali, che aiutano a verificare l'autenticità e l'integrità del digitale documenti. Inoltre, puoi utilizzare il modulo crittografico per proteggere i flussi per la trasmissione dei dati per impedire la manomissione dei dati e l'intercettazione durante la trasmissione.