Kripto modul Node.js usmjerava proces izvođenja kriptografskih operacija. Evo kako ga koristiti.
Kriptografija je praksa osiguravanja komunikacije i podataka njihovim pretvaranjem u formate koje samo ovlaštene strane mogu dešifrirati.
Node.js kripto modul je ugrađeni modul koji pruža kriptografsku funkcionalnost Node.js aplikacijama. Nudi niz kriptografskih mogućnosti, uključujući enkripciju, dešifriranje, raspršivanje, digitalne potpise, sigurno generiranje nasumičnog broja i više.
Ovdje ćete istražiti različite primjene kripto modula Node.js i kako ih možete koristiti za zaštitu svojih aplikacija.
Raspršivanje
Raspršivanje je jednosmjerna kriptografska tehnika koji možete upotrijebiti za transformaciju određenog ključa ili niza u izlaz fiksne veličine poznat kao hash ili sažetak.
Raspršivanje je jednosmjerna funkcija što znači da kada raspršite ključ ili niz, ne možete dobiti izvornu vrijednost iz generiranog raspršivanja.
Node.js kripto modul podržava različite funkcije raspršivanja kao što su SHA-256, SHA-512, MD5 i druge.
Možete raspršiti podatke pomoću kripto modula createHash metoda koja uzima algoritam raspršivanja kao argument. Metoda vraća a Haš objekt, koji možete koristiti za raspršivanje podataka pomoću Ažuriraj i probaviti metode.
Na primjer:
konst kripto = zahtijevati('kripto');
konst podaci = "lozinka";
// stvaranje hash objekta
konst hashAlgo = crypto.createHash('sha256')// prosljeđivanje podataka za raspršivanje
hashAlgo.update (podaci);// Stvaranje hasha u potrebnom formatu
konst hash = hashAlgo.digest('hex');
konzola.log(`Hash: ${hash}`);
U gornjem primjeru, kripto modul createHash stvorio objekt raspršivanja s sha256 algoritam raspršivanja. The Ažuriraj metoda na hash objektu uzima ulazne podatke i hashira ih. Onda probaviti metoda uzima parametar kodiranja, navodeći format izlazne hash vrijednosti i vraća hash u navedenom formatu (šesterokutni).
Raspršivanje je korisno za provjeru integriteta podataka, pohranjivanje lozinki, digitalnih potpisa itd.
Generiranje nasumičnih podataka
Kriptografski sigurni nasumični podaci često su potrebni u kriptografiji, igranju i testiranju za različite slučajeve upotrebe.
U kriptografiji možete koristiti nasumične podatke za generiranje ključeva, soli i inicijalizacijskih vektora za algoritme šifriranja i dešifriranja.
U igricama možete koristiti nasumične podatke za generiranje razina igre, likova, predmeta i još mnogo toga kako biste spriječili varanje i bili sigurni da igra nije predvidljiva.
U testiranju ga možete koristiti za simulaciju scenarija iz stvarnog svijeta i rubnih slučajeva.
Možete generirati nasumične podatke pomoću kripto modula Node.js randomBytes metoda. Ova metoda uzima broj kao argument i vraća međuspremnik nasumičnih bajtova.
Ovaj broj predstavlja veličinu bajtova koje će metoda generirati. Međutim, broj ne smije biti veći od 2³¹ - 1 (2147483647), što je najveća vrijednost koja se može predstaviti 32-bitnim cijelim brojem s predznakom.
Na primjer:
konst kripto = zahtijevati("kripto");
// kreiraj nasumične bajtove
konst randomBytes = crypto.randomBytes(32);// pretvoriti u hex
konst randomString = randomBytes.toString("hex");
konzola.log (randomString); //bilježi nasumični niz u konzolu
Gornji blok koda generira i bilježi nasumični niz od 64 heksadecimalna znaka (32 bajta) na konzolu.
Generiranje kriptografski sigurnih nasumičnih podataka važno je jer osigurava da nasumični podaci nisu predvidljivi i da ih napadači ne mogu manipulirati ili pogoditi.
Šifriranje i dešifriranje u Node.js
Šifriranje je proces pretvaranja običnog teksta u nečitljiv oblik (šifrirani tekst) pomoću algoritma za šifriranje i tajnog ključa.
Dešifriranje je obrnuto od enkripcije. To je proces pretvaranja šifriranog teksta natrag u običan tekst koristeći isti algoritam šifriranja i ključ.
Node.js kripto modul pruža podršku za razne algoritme šifriranja i dešifriranja, uključujući AES (Advanced Encryption Standard), DES (Data Encryption Standard) i RSA (Rivest–Shamir–Adleman).
Kako šifrirati podatke u Node.js pomoću kripto modula
Podatke možete šifrirati pomoću crypto.createCipheriv() metoda, koja uzima algoritam šifriranja, tajni ključ i inicijalizacijski vektor kao ulaz. Tajni ključ ovisi o algoritmu šifriranja koji koristite. Na primjer, za algoritam aes-256 u CBC načinu, duljina ključa mora biti 32 bajta.
Metoda vraća a Šifra objekt, koji možete koristiti za šifriranje podataka pomoću Ažuriraj() i konačni() metode. Šifrirani podaci obično se predstavljaju kao heksadecimalni niz ili međuspremnik.
Na primjer:
konst kripto = zahtijevati("kripto");
// Generirajte tajni ključ za šifriranje i dešifriranje.
konst tajniKljuč = kripto.randomBytes(32);// Generiraj inicijalizacijski vektor
konst iv = crypto.randomBytes(16);// podaci koji se šifriraju
konst čisti tekst = "Ovo je tajna poruka";// kreiraj šifrirani objekt
konst cipher = crypto.createCipheriv("aes-256-cbc", tajni ključ, iv);// šifriranje podataka
neka encryptedText = cipher.update (plainText, "utf-8", "hex");// finalizirati enkripciju
encryptedText += cipher.final("hex");
konzola.log (encryptedText);
Gornji primjer pokazuje kako možete šifrirati običan tekst pomoću aes-256 u CBC načinu rada pomoću kripto modula. Generira tajni ključ i vektor inicijalizacije pomoću kripto.randomBytes metoda. Zatim stvara šifrirani objekt koristeći crypto.createCipheriv i šifrira poruku običnog teksta pomoću šifra.ažurirati i šifra.konačni metode.
Rezultat je heksadecimalni niz šifrirane poruke, koju možete dešifrirati koristeći isti tajni ključ i IV.
Kako dešifrirati podatke u Node.js pomoću kripto modula
Šifrirane podatke možete dešifrirati pomoću kripto modula crypto.createDecipheriv() metoda, koja kao ulaz uzima algoritam za dešifriranje, tajni ključ i vektor inicijalizacije. Metoda vraća a Dešifrirati objekt, koji možete koristiti za dešifriranje podataka pomoću Dešifriraj.ažuriraj() i Dešifriraj.final() metode.
Na primjer:
// kreiraj objekt za dešifriranje
konst dešifrirati = crypto.createDecipheriv("aes-256-cbc", tajni ključ, iv);// dešifriranje podataka
neka decryptedText = decrypt.update (encryptedText, "hex", "utf-8");// finalizirati dešifriranje
decryptedText += decrypt.final("utf-8");
konzola.log (dešifrirani tekst); // Ovo je tajna poruka
Gornji primjer pokazuje kako možete dešifrirati šifrirane podatke pomoću istog algoritma, tajnog ključa i vektora inicijalizacije s kojim ste ih šifrirali.
Stvara Decipher objekt pomoću crypto.createDecipheriv metoda. Zatim dešifrira podatke pomoću dešifrirati.ažurirati metoda, koja uzima podatke, ulazno kodiranje i izlazno kodiranje kao argumente. Konačno, završava proces dešifriranja pomoću dešifrirati.konačni metoda. Pozivanje ove metode osigurava da se objekt Decipher više može koristiti za dešifriranje podataka. Rezultat je niz običnog teksta.
Šifriranje i dešifriranje ključni su za zaštitu osjetljivih podataka i održavanje njihove povjerljivosti. Imaju različite stvarne aplikacije u e-trgovini, internetskom bankarstvu, pohranjivanju podataka itd.
Ostale primjene kripto modula Node.js
Osim hashiranja, generiranja kriptografski sigurnih nasumičnih podataka te enkripcije i dešifriranja, također možete koristiti Node.js kripto modul za potpisivanje i provjeru digitalnih potpisa, koji pomažu u provjeri autentičnosti i integriteta digitalnih dokumenata. Osim toga, možete koristiti kripto modul za osiguranje tokova za prijenos podataka kako biste spriječili petljanje podataka i prisluškivanje tijekom prijenosa.