Modulul criptografic Node.js eficientizează procesul de efectuare a operațiunilor criptografice. Iată cum să-l folosești.
Criptografia este practica de a securiza comunicațiile și datele prin conversia acestora în formate pe care doar părțile autorizate le pot descifra.
Node.js cripto module este un modul încorporat care oferă funcționalitate criptografică aplicațiilor Node.js. Oferă o gamă largă de capabilități criptografice, inclusiv criptare, decriptare, hashing, semnături digitale, generare securizată de numere aleatoare și multe altele.
Aici veți explora diferitele aplicații ale modulului cripto Node.js și cum le puteți utiliza pentru a vă securiza aplicațiile.
Hashing
Hashingul este o tehnică criptografică unidirecțională pe care îl puteți folosi pentru a transforma o anumită cheie sau șir într-o ieșire de dimensiune fixă cunoscută sub numele de hash sau digest.
Hashing-ul este o funcție unidirecțională, ceea ce înseamnă că atunci când hashați o cheie sau un șir, nu puteți obține valoarea inițială din hash-ul generat.
Modulul cripto Node.js acceptă diverse funcții de hashing, cum ar fi SHA-256, SHA-512, MD5 și multe altele.
Puteți hash datele folosind modulul cripto createHash metoda, care ia ca argument algoritmul de hashing. Metoda returnează a Hash obiect, pe care îl puteți utiliza pentru a hashing datele folosind Actualizați și digera metode.
De exemplu:
const cripto = cere(„cripto”);
const date = "parola";
// creează obiectul hash
const hashAlgo = crypto.createHash(„sha256”)// transmiterea datelor pentru a fi hashing
hashAlgo.update (date);// Crearea hash-ului în formatul necesar
const hash = hashAlgo.digest('hex');
consolă.Buturuga(`Hash: ${hash}`);
În exemplul de mai sus, modulul cripto createHash a creat un obiect hashing cu sha256 algoritm de hashing. The Actualizați metoda de pe obiectul hash ia datele de intrare și le hash. Apoi digera metoda ia un parametru de codificare, specificând formatul valorii hash de ieșire și returnează hash-ul în formatul specificat (hex).
Hashing-ul este util pentru verificarea integrității datelor, stocării parolelor, semnăturilor digitale și multe altele.
Generarea de date aleatorii
Date aleatorii securizate din punct de vedere criptografic sunt adesea necesare în criptografie, jocuri și testare pentru diferite cazuri de utilizare.
În criptografie, puteți utiliza date aleatorii pentru a genera chei, săruri și vectori de inițializare pentru algoritmii de criptare și decriptare.
În jocuri, puteți folosi date aleatorii pentru a genera niveluri de joc, personaje, articole și multe altele pentru a preveni înșelăciunea și pentru a vă asigura că jocul nu este previzibil.
În timpul testării, îl puteți folosi pentru a simula scenarii din lumea reală și cazuri marginale.
Puteți genera date aleatorii folosind modulul cripto Node.js randomBytes metodă. Această metodă ia un număr ca argument și returnează un buffer de octeți aleatori.
Acest număr reprezintă dimensiunea octeților pe care metoda îi va genera. Cu toate acestea, numărul nu trebuie să fie mai mare decât 2³¹ - 1 (2147483647), care este valoarea maximă care poate fi reprezentată printr-un număr întreg cu semn pe 32 de biți.
De exemplu:
const cripto = cere("cripto");
// creează octeți aleatori
const randomBytes = crypto.randomBytes(32);// convertiți în hex
const randomString = randomBytes.toString("hex");
consolă.log (randomString); //înregistrează șir aleatoriu în consolă
Blocul de cod de mai sus generează și înregistrează un șir aleatoriu de 64 de caractere hexazecimale (32 de octeți) pe consolă.
Generarea de date aleatoare securizate criptografic este importantă deoarece asigură că datele aleatoare nu sunt previzibile și că atacatorii nu le pot manipula sau ghici.
Criptare și decriptare în Node.js
Criptarea este procesul de transformare a textului simplu într-o formă ilizibilă (text cifrat) folosind un algoritm de criptare și o cheie secretă.
Decriptarea este inversul criptării. Este procesul de conversie a textului cifrat înapoi în text simplu folosind același algoritm și cheie de criptare.
Modulul cripto Node.js oferă suport pentru diverși algoritmi de criptare și decriptare, inclusiv AES (Advanced Encryption Standard), DES (Data Encryption Standard) și RSA (Rivest–Shamir–Adleman).
Cum să criptați datele în Node.js folosind modulul cripto
Puteți cripta datele folosind crypto.createCipheriv() metoda, care ia ca intrare algoritmul de criptare, cheia secretă și un vector de inițializare. Cheia secretă depinde de algoritmul de criptare pe care îl utilizați. De exemplu, pentru algoritmul aes-256 în CBC modul, lungimea cheii trebuie să fie de 32 de octeți.
Metoda returnează a Cifru obiect, pe care îl puteți folosi pentru a cripta datele folosind Actualizați() și final() metode. Datele criptate sunt de obicei reprezentate ca un șir hexazecimal sau un buffer.
De exemplu:
const cripto = cere("cripto");
// Generați o cheie secretă pentru criptare și decriptare.
const secretKey = crypto.randomBytes(32);// Generați un vector de inițializare
const iv = crypto.randomBytes(16);// datele de criptat
const text simplu = „Acesta este un mesaj secret”;// creează un obiect cifrat
const cifr = crypto.createCipheriv("aes-256-cbc", secretKey, iv);// criptează datele
lăsa encryptedText = cipher.update (Text simplu, "utf-8", "hex");// finaliza criptarea
EncryptedText += cipher.final("hex");
consolă.log (text criptat);
Exemplul de mai sus demonstrează cum puteți cripta text simplu folosind aes-256 în modul CBC folosind modulul cripto. Acesta generează o cheie secretă și un vector de inițializare folosind crypto.randomBytes metodă. Apoi creează un obiect cifrat folosind crypto.createCipheriv metoda și criptează mesajul text simplu folosind criptare.actualizare și cifră.finală metode.
Rezultatul este un șir hexazecimal al mesajului criptat, pe care îl puteți decripta folosind aceeași cheie secretă și IV.
Cum să decriptați datele în Node.js folosind modulul cripto
Puteți decripta datele criptate folosind modulul cripto crypto.createDecipheriv() metoda, care ia ca intrare algoritmul de decriptare, cheia secretă și un vector de inițializare. Metoda returnează a Descifra obiect, pe care îl puteți folosi pentru a decripta datele folosind Decipher.update() și Decipher.final() metode.
De exemplu:
// creează obiectul Decipher
const descipher = crypto.createDecipheriv("aes-256-cbc", secretKey, iv);// decriptează datele
lăsa decryptedText = decipher.update (text criptat, "hex", "utf-8");// finaliza decriptarea
decryptedText += decipher.final("utf-8");
consolă.log (Text decriptat); // Acesta este un mesaj secret
Exemplul de mai sus demonstrează cum puteți decripta datele criptate folosind același algoritm, cheie secretă și vector de inițializare cu care le-ați criptat.
Acesta creează un obiect Decipher folosind crypto.createDecipheriv metodă. Apoi decriptează datele folosind descifrare.actualizare metoda, care ia ca argumente datele, codificarea de intrare și codificarea de ieșire. În cele din urmă, încheie procesul de decriptare folosind descifra.final metodă. Apelarea acestei metode asigură că obiectul Decipher poate fi folosit mai mult pentru a decripta datele. Rezultatul este un șir de text simplu.
Criptarea și decriptarea sunt cruciale pentru protejarea datelor sensibile și pentru menținerea confidențialității acestora. Au diverse aplicații din lumea reală în comerțul electronic, servicii bancare online, stocarea datelor și multe altele.
Alte aplicații ale modulului cripto Node.js
Pe lângă hashing, generarea de date aleatoare securizate criptografic și criptarea și decriptarea, puteți utiliza și Modul cripto Node.js pentru semnarea și verificarea semnăturilor digitale, care ajută la verificarea autenticității și integrității digitale documente. În plus, puteți utiliza modulul cripto pentru a securiza fluxurile pentru transmisia de date pentru a preveni manipularea datelor și interceptarea cu urechea în timpul transmiterii.