Kripto modul Node.js poenostavi postopek izvajanja kriptografskih operacij. Tukaj je opisano, kako ga uporabiti.

Kriptografija je praksa varovanja komunikacije in podatkov s pretvorbo v formate, ki jih lahko razvozlajo samo pooblaščene osebe.

Node.js kripto modul je vgrajen modul, ki aplikacijam Node.js zagotavlja kriptografsko funkcionalnost. Ponuja vrsto kriptografskih zmogljivosti, vključno s šifriranjem, dešifriranjem, zgoščevanjem, digitalnimi podpisi, varnim ustvarjanjem naključnih števil itd.

Tukaj boste raziskali različne aplikacije kripto modula Node.js in kako jih lahko uporabite za zaščito svojih aplikacij.

Zgoščevanje

Zgoščevanje je enosmerna kriptografska tehnika ki jih lahko uporabite za pretvorbo danega ključa ali niza v izhod fiksne velikosti, znan kot zgoščen ali izvleček.

Zgoščevanje je enosmerna funkcija, kar pomeni, da ko zgoščite ključ ali niz, ne morete pridobiti izvirne vrednosti iz ustvarjenega zgoščevanja.

Šifrirani modul Node.js podpira različne funkcije zgoščevanja, kot so SHA-256, SHA-512, MD5 in druge.

Podatke lahko zgostite z uporabo kripto modulov createHash metoda, ki vzame algoritem zgoščevanja kot argument. Metoda vrne a Hash objekt, ki ga lahko uporabite za zgoščevanje podatkov z uporabo nadgradnja in prebaviti metode.

Na primer:

konst kripto = zahtevati('crypto');

konst podatki = "geslo";

// ustvarjanje zgoščenega objekta
konst hashAlgo = crypto.createHash('sha256')

// posredovanje podatkov za zgoščevanje
hashAlgo.update (podatki);

// Ustvarjanje zgoščene vrednosti v zahtevanem formatu
konst hash = hashAlgo.digest('hex');

konzola.log(`Hash: ${hash}`);

V zgornjem primeru je kripto modul createHash ustvaril objekt zgoščevanja z sha256 algoritem zgoščevanja. The nadgradnja metoda na objektu zgoščevanja vzame vhodne podatke in jih zgosti. Potem je prebaviti metoda vzame parameter kodiranja, ki določa obliko izhodne zgoščene vrednosti, in vrne zgoščeno vrednost v podani obliki (hex).

Zgoščevanje je uporabno za preverjanje celovitosti podatkov, shranjevanja gesel, digitalnih podpisov in drugega.

Ustvarjanje naključnih podatkov

Kriptografsko varni naključni podatki so pogosto potrebni v kriptografiji, igranju iger in testiranju za različne primere uporabe.

V kriptografiji lahko uporabite naključne podatke za ustvarjanje ključev, soli in inicializacijskih vektorjev za algoritme šifriranja in dešifriranja.

Pri igranju iger lahko uporabite naključne podatke za ustvarjanje ravni igre, likov, predmetov in drugega, da preprečite goljufanje in zagotovite, da igra ni predvidljiva.

Pri testiranju ga lahko uporabite za simulacijo resničnih scenarijev in robnih primerov.

Naključne podatke lahko ustvarite z uporabo kripto modula Node.js randomBytes metoda. Ta metoda sprejme število kot argument in vrne medpomnilnik naključnih bajtov.

To število predstavlja velikost bajtov, ki jih bo metoda ustvarila. Število pa ne sme biti večje od 2³¹ - 1 (2147483647), kar je največja vrednost, ki jo lahko predstavi 32-bitno celo število s predznakom.

Na primer:

konst kripto = zahtevati("kripto");

// ustvarjanje naključnih bajtov
konst randomBytes = crypto.randomBytes(32);

// pretvori v hex
konst randomString = randomBytes.toString("šestnajstiški");

konzola.log (naključni niz); //zapiše naključni niz v konzolo

Zgornji blok kode ustvari in v konzolo zabeleži naključni niz 64 šestnajstiških znakov (32 bajtov).

Generiranje kriptografsko varnih naključnih podatkov je pomembno, ker zagotavlja, da naključni podatki niso predvidljivi in ​​da jih napadalci ne morejo manipulirati ali uganiti.

Šifriranje in dešifriranje v Node.js

Šifriranje je postopek pretvorbe navadnega besedila v neberljivo obliko (šifrirano besedilo) z uporabo šifrirnega algoritma in tajnega ključa.

Dešifriranje je obratno od šifriranja. To je postopek pretvorbe šifriranega besedila nazaj v navadno besedilo z uporabo istega šifrirnega algoritma in ključa.

Kripto modul Node.js zagotavlja podporo za različne algoritme šifriranja in dešifriranja, vključno z AES (Advanced Encryption Standard), DES (Data Encryption Standard) in RSA (Rivest–Shamir–Adleman).

Kako šifrirati podatke v Node.js z uporabo kripto modula

Podatke lahko šifrirate z uporabo crypto.createCipheriv() metoda, ki kot vhod vzame šifrirni algoritem, skrivni ključ in inicializacijski vektor. Skrivni ključ je odvisen od algoritma šifriranja, ki ga uporabljate. Na primer za algoritem aes-256 v CBC mora biti dolžina ključa 32 bajtov.

Metoda vrne a Šifra objekt, ki ga lahko uporabite za šifriranje podatkov z uporabo nadgradnja() in končno() metode. Šifrirani podatki so običajno predstavljeni kot šestnajstiški niz ali medpomnilnik.

Na primer:

konst kripto = zahtevati("kripto");

// Ustvari skrivni ključ za šifriranje in dešifriranje.
konst secretKey = crypto.randomBytes(32);

// Ustvari inicializacijski vektor
konst iv = crypto.randomBytes(16);

// podatki za šifriranje
konst plainText = "To je skrivno sporočilo";

// ustvari šifrirani objekt
konst cipher = crypto.createCipheriv("aes-256-cbc", SecretKey, iv);

// šifriranje podatkov
pustiti encryptedText = cipher.update (plainText, "utf-8", "šestnajstiški");

// zaključimo šifriranje
encryptedText += cipher.final("šestnajstiški");

konzola.log (šifriranoBesedilo);

Zgornji primer prikazuje, kako lahko šifrirate golo besedilo z uporabo aes-256 v načinu CBC z uporabo kripto modula. Ustvari skrivni ključ in inicializacijski vektor z uporabo crypto.randomBytes metoda. Nato ustvari šifrirani objekt z uporabo crypto.createCipheriv in šifrira sporočilo z navadnim besedilom z uporabo šifra.posodobitev in šifra.final metode.

Rezultat je šestnajstiški niz šifriranega sporočila, ki ga lahko dešifrirate z istim tajnim ključem in IV.

Kako dešifrirati podatke v Node.js z uporabo kripto modula

Šifrirane podatke lahko dešifrirate s pomočjo kripto modulov crypto.createDecipheriv() metoda, ki kot vhod vzame algoritem za dešifriranje, skrivni ključ in inicializacijski vektor. Metoda vrne a Dešifriraj objekt, ki ga lahko uporabite za dešifriranje podatkov z uporabo Dešifriraj.posodobitev() in Decipher.final() metode.

Na primer:

// ustvari predmet Dešifriraj
konst razvozlati = crypto.createDecipheriv("aes-256-cbc", SecretKey, iv);

// dešifriranje podatkov
pustiti decryptedText = decipher.update (encryptedText, "šestnajstiški", "utf-8");

// dokončaj dešifriranje
decryptedText += decipher.final("utf-8");

konzola.log (dešifriranoBesedilo); // To je skrivno sporočilo

Zgornji primer prikazuje, kako lahko dešifrirate šifrirane podatke z istim algoritmom, skrivnim ključem in inicializacijskim vektorjem, s katerim ste jih šifrirali.

Ustvari predmet Dešifriranje z uporabo crypto.createDecipheriv metoda. Nato dešifrira podatke z uporabo razvozlati.posodobiti metoda, ki vzame podatke, vhodno kodiranje in izhodno kodiranje kot argumente. Na koncu konča postopek dešifriranja z uporabo razvozlati.končno metoda. Klic te metode zagotavlja, da je objekt Decipher mogoče več uporabljati za dešifriranje podatkov. Rezultat je navaden besedilni niz.

Šifriranje in dešifriranje sta ključnega pomena za zaščito občutljivih podatkov in ohranjanje njihove zaupnosti. Imajo različne resnične aplikacije v e-trgovini, spletnem bančništvu, shranjevanju podatkov itd.

Druge aplikacije kripto modula Node.js

Poleg zgoščevanja, generiranja kriptografsko varnih naključnih podatkov ter šifriranja in dešifriranja lahko uporabite tudi Kriptomodul Node.js za podpisovanje in preverjanje digitalnih podpisov, ki pomaga preverjati pristnost in celovitost digitalnih dokumenti. Poleg tega lahko uporabite kripto modul za zavarovanje tokov za prenos podatkov, da preprečite spreminjanje podatkov in prisluškovanje med prenosom.