Krüptomoodul Node.js lihtsustab krüptograafiliste toimingute sooritamise protsessi. Siin on, kuidas seda kasutada.

Krüptograafia on side ja andmete turvamise tava, teisendades need vormingutesse, mida saavad dešifreerida ainult volitatud osapooled.

Node.js krüpto moodul on sisseehitatud moodul, mis pakub Node.js rakendustele krüptograafilisi funktsioone. See pakub mitmesuguseid krüptograafilisi võimalusi, sealhulgas krüpteerimist, dekrüpteerimist, räsimist, digitaalallkirju, turvalist juhuslike numbrite genereerimist ja palju muud.

Siin saate uurida Node.js krüptomooduli erinevaid rakendusi ja seda, kuidas saate neid oma rakenduste kaitsmiseks kasutada.

Räsimine

Räsimine on ühesuunaline krüptotehnika mida saate kasutada antud võtme või stringi muutmiseks fikseeritud suurusega väljundiks, mida nimetatakse räsi- või kokkuvõtteks.

Räsimine on ühesuunaline funktsioon, mis tähendab, et võtme või stringi räsimisel ei saa te genereeritud räsist algset väärtust.

Krüptomoodul Node.js toetab erinevaid räsifunktsioone, nagu SHA-256, SHA-512, MD5 ja palju muud.

Andmeid saate räsida krüptomooduli abil looHash meetod, mis võtab argumendina räsimisalgoritmi. Meetod tagastab a Räsi objekt, mida saate kasutada andmete räsimiseks värskendada ja seedida meetodid.

Näiteks:

konst krüpto = nõuda("krüpto");

konst andmed = "parool";

// räsiobjekti loomine
konst hashAlgo = crypto.createHash('sha256')

// räsitavate andmete edastamine
hashAlgo.update (andmed);

// Räsi loomine vajalikus vormingus
konst hash = hashAlgo.digest('hex');

konsool.log(`Räsi: ${hash}`);

Ülaltoodud näites on krüptomoodul looHash lõiga räsiobjekti sha256 räsimise algoritm. The värskendada meetod räsiobjektil võtab sisendandmed ja räsib need. Siis seedida meetod võtab kodeerimisparameetri, mis määrab väljundi räsiväärtuse vormingu ja tagastab räsi määratud vormingus (hex).

Räsimine on kasulik andmete terviklikkuse, paroolide salvestamise, digitaalallkirjade ja muu kontrollimiseks.

Juhuslike andmete genereerimine

Krüptograafiliselt turvalisi juhuslikke andmeid on sageli vaja krüptograafias, mängides ja erinevatel kasutusjuhtudel testimisel.

Krüptograafias saate krüpteerimis- ja dekrüpteerimisalgoritmide võtmete, soolade ja lähtestamisvektorite genereerimiseks kasutada juhuslikke andmeid.

Mängudes saate kasutada juhuslikke andmeid mängutasemete, tegelaste, esemete ja muu loomiseks, et vältida petmist ja veenduda, et mäng pole etteaimatav.

Testimisel saate seda kasutada reaalse maailma stsenaariumide ja äärmuslike juhtumite simuleerimiseks.

Juhuslikke andmeid saate genereerida krüptomooduli Node.js abil juhuslikud baidid meetod. See meetod võtab argumendina arvu ja tagastab juhuslike baitide puhvri.

See arv tähistab meetodi poolt genereeritavate baitide suurust. Arv ei tohi aga olla suurem kui 2³¹ - 1 (2147483647), mis on maksimaalne väärtus, mida saab esitada 32-bitise märgiga täisarvuga.

Näiteks:

konst krüpto = nõuda("krüpto");

// juhuslike baitide loomine
konst randomBytes = crypto.randomBytes(32);

// teisendada kuueteistkümnendikuks
konst randomString = randomBytes.toString("kuuskuus");

konsool.log (randomString); //logib juhusliku stringi konsooli

Ülaltoodud koodiplokk genereerib ja logib konsooli juhusliku 64 kuueteistkümnendmärgist (32 baiti) koosneva stringi.

Krüptograafiliselt turvaliste juhuslike andmete genereerimine on oluline, kuna see tagab, et juhuslikud andmed ei ole etteaimatavad ja ründajad ei saa nendega manipuleerida ega ära arvata.

Krüpteerimine ja dekrüpteerimine rakenduses Node.js

Krüpteerimine on lihtteksti muutmine loetamatuks vormiks (šifreeritud tekst), kasutades krüpteerimisalgoritmi ja salajast võtit.

Dekrüpteerimine on krüptimisele vastupidine. See on protsess, mille käigus teisendatakse šifreeritud tekst tagasi lihttekstiks, kasutades sama krüpteerimisalgoritmi ja võtit.

Krüptomoodul Node.js toetab erinevaid krüpteerimis- ja dekrüpteerimisalgoritme, sealhulgas AES (täiustatud krüpteerimisstandard), DES (andmete krüptimise standard) ja RSA (Rivest–Shamir–Adleman).

Andmete krüptimine Node.js-is krüptomooduli abil

Saate andmeid krüpteerida, kasutades crypto.createCipheriv() meetod, mis võtab sisendiks krüpteerimisalgoritmi, salajase võtme ja lähtestamisvektori. Salajane võti sõltub teie kasutatavast krüpteerimisalgoritmist. Näiteks selleks aes-256 algoritm sisse CBC režiimis peab võtme pikkus olema 32 baiti.

Meetod tagastab a Šifr objekt, mida saate kasutada andmete krüpteerimiseks värskenda() ja lõplik () meetodid. Krüptitud andmed esitatakse tavaliselt kuueteistkümnendsüsteemi stringina või puhvrina.

Näiteks:

konst krüpto = nõuda("krüpto");

// Looge krüpteerimiseks ja dekrüpteerimiseks salajane võti.
konst secretKey = crypto.randomBytes(32);

// Initsialiseerimisvektori genereerimine
konst iv = crypto.randomBytes(16);

// krüpteeritavad andmed
konst lihttekst = "See on salasõnum";

// loo šifriobjekt
konst šifr = crypto.createCipheriv("aes-256-cbc", SecretKey, iv);

// krüpteeri andmed
lase encryptedText = cipher.update (lihttekst, "utf-8", "kuuskuus");

// krüptimise lõpuleviimine
encryptedText += cipher.final("kuuskuus");

konsool.log (krüpteeritud tekst);

Ülaltoodud näide näitab, kuidas saate krüptomooduli abil CBC-režiimis lihtteksti krüptida, kasutades aes-256. See genereerib salajase võtme ja lähtestamisvektori, kasutades crypto.randomBytes meetod. Seejärel loob šifriobjekti kasutades crypto.createCipheriv meetodit ja krüptib lihttekstsõnumi kasutades cipher.update ja šifr.lõplik meetodid.

Tulemuseks on krüptitud sõnumi kuueteistkümnendsüsteem, mille saate dekrüpteerida sama salajase võtme ja IV abil.

Kuidas dekrüpteerida andmeid rakenduses Node.js, kasutades krüptomoodulit

Krüpteeritud andmeid saate krüptomooduli abil dekrüpteerida crypto.createDecipheriv() meetod, mis võtab sisendiks dekrüpteerimisalgoritmi, salajase võtme ja lähtestamisvektori. Meetod tagastab a Dešifreerige objekt, mida saate kasutada andmete dekrüpteerimiseks Decipher.update() ja Decipher.final() meetodid.

Näiteks:

// loo dešifreerimisobjekt
konst dešifreerima = crypto.createDecipheriv("aes-256-cbc", SecretKey, iv);

// andmete dekrüpteerimine
lase decryptedText = dešifreeri.uuendus (encryptedText, "kuuskuus", "utf-8");

// dekrüpteerimise lõpuleviimine
decryptedText += decrypted.final("utf-8");

konsool.log (decryptedText); // See on salasõnum

Ülaltoodud näide näitab, kuidas saate krüptitud andmeid dekrüpteerida, kasutades sama algoritmi, salavõtit ja lähtestamisvektorit, millega need krüpteerisite.

See loob Decipher objekti kasutades crypto.createDecipheriv meetod. Seejärel dekrüpteerib andmed, kasutades dešifreerida.uuendus meetod, mis võtab argumentidena andmed, sisendkodeeringu ja väljundkodeeringu. Lõpuks lõpetab see dekrüpteerimisprotsessi kasutades dešifreerida.lõplik meetod. Selle meetodi kutsumine tagab, et Decipher-objekti saab andmete dekrüpteerimiseks kauem kasutada. Tulemuseks on lihtteksti string.

Krüpteerimine ja dekrüpteerimine on tundlike andmete kaitsmiseks ja nende konfidentsiaalsuse säilitamiseks üliolulised. Neil on mitmesuguseid reaalseid rakendusi e-kaubanduses, Interneti-panganduses, andmesalvestuses ja mujal.

Muud krüptomooduli Node.js rakendused

Lisaks räsimisele, krüptograafiliselt turvaliste juhuslike andmete genereerimisele ning krüptimisele ja dekrüpteerimisele saate kasutada ka Node.js krüptomoodul digitaalallkirjade allkirjastamiseks ja kontrollimiseks, mis aitavad kontrollida digitaalsete allkirjade autentsust ja terviklikkust dokumente. Lisaks saate krüptomoodulit kasutada andmeedastusvoogude kaitsmiseks, et vältida andmete rikkumist ja pealtkuulamist edastamise ajal.