Node.js kriptogrāfijas modulis racionalizē kriptogrāfijas darbību veikšanas procesu. Lūk, kā to izmantot.

Kriptogrāfija ir komunikācijas un datu nodrošināšanas prakse, pārvēršot tos formātos, ko var atšifrēt tikai pilnvarotas puses.

Node.js kriptovalūta modulis ir iebūvēts modulis, kas nodrošina kriptogrāfijas funkcionalitāti Node.js lietojumprogrammām. Tas piedāvā virkni kriptogrāfijas iespēju, tostarp šifrēšanu, atšifrēšanu, jaukšanu, ciparparakstus, drošu nejaušu skaitļu ģenerēšanu un daudz ko citu.

Šeit jūs izpētīsit dažādās Node.js kriptogrāfijas moduļa lietojumprogrammas un to, kā tās izmantot, lai aizsargātu savas lietojumprogrammas.

Jaukšana

Jaukšana ir vienvirziena kriptogrāfijas tehnika ko varat izmantot, lai pārveidotu doto atslēgu vai virkni fiksēta izmēra izvadē, kas pazīstama kā jaucējkods vai īssavilkums.

Jaukšana ir vienvirziena funkcija, kas nozīmē, ka, jaucot atslēgu vai virkni, jūs nevarat iegūt sākotnējo vērtību no ģenerētās jaukšanas.

Node.js kriptogrāfijas modulis atbalsta dažādas jaukšanas funkcijas, piemēram, SHA-256, SHA-512, MD5 un citas.

Varat jaukt datus, izmantojot kriptogrāfijas moduli izveidot Hash metode, kas izmanto jaukšanas algoritmu kā argumentu. Metode atgriež a Hash objektu, kuru varat izmantot datu jaukšanai, izmantojot Atjaunināt un sagremot metodes.

Piemēram:

konst kriptovalūta = pieprasīt('kripto');

konst dati = "parole";

// izveido jaucējobjektu
konst hashAlgo = crypto.createHash("sha256")

// jaukājamo datu nodošana
hashAlgo.update (dati);

// Jaucējkoda izveide vajadzīgajā formātā
konst hash = hashAlgo.digest('hex');

konsole.log(`Hašs: ${hash}`);

Iepriekš minētajā piemērā kriptogrāfijas modulis izveidot Hash izveidoja jaukšanas objektu ar sha256 jaukšanas algoritms. The Atjaunināt metode hash objektā ņem ievades datus un sajauc tos. Tad sagremot metode ņem kodēšanas parametru, norādot izejas jaucējvērtības formātu, un atgriež jaucēju norādītajā formātā (hex).

Jaukšana ir noderīga, lai pārbaudītu datu integritāti, paroļu glabāšanu, ciparparakstus un citus.

Nejaušo datu ģenerēšana

Kriptogrāfiski droši nejauši dati bieži ir nepieciešami kriptogrāfijā, spēlēs un testēšanā dažādiem lietošanas gadījumiem.

Kriptogrāfijā varat izmantot nejaušus datus, lai ģenerētu atslēgas, sāļus un inicializācijas vektorus šifrēšanas un atšifrēšanas algoritmiem.

Spēlējot, varat izmantot nejaušus datus, lai ģenerētu spēles līmeņus, rakstzīmes, vienumus un daudz ko citu, lai novērstu krāpšanos un pārliecinātos, ka spēle nav paredzama.

Pārbaudē varat to izmantot, lai simulētu reālās pasaules scenārijus un malas gadījumus.

Varat ģenerēt nejaušus datus, izmantojot Node.js kriptogrāfijas moduli nejauši baiti metodi. Šī metode izmanto skaitli kā argumentu un atgriež nejaušu baitu buferi.

Šis skaitlis apzīmē metodes ģenerēto baitu lielumu. Tomēr skaitlis nedrīkst būt lielāks par 2³¹ - 1 (2147483647), kas ir maksimālā vērtība, ko var attēlot ar 32 bitu veselu skaitli.

Piemēram:

konst kriptovalūta = pieprasīt("kripto");

// izveidot nejaušus baitus
konst randomBytes = crypto.randomBytes(32);

// konvertēt uz hex
konst randomString = randomBytes.toString("hex");

konsole.log (randomString); //reģistrē nejaušu virkni konsolē

Iepriekš minētais koda bloks ģenerē un konsolē reģistrē nejaušu 64 heksadecimālo rakstzīmju (32 baitu) virkni.

Kriptogrāfiski drošu nejaušu datu ģenerēšana ir svarīga, jo tā nodrošina, ka nejaušie dati nav paredzami un uzbrucēji nevar ar tiem manipulēt vai uzminēt.

Šifrēšana un atšifrēšana pakalpojumā Node.js

Šifrēšana ir vienkārša teksta pārveidošanas process nelasāmā formā (šifrētu tekstu), izmantojot šifrēšanas algoritmu un slepeno atslēgu.

Atšifrēšana ir pretēja šifrēšanai. Tas ir process, kurā šifrētais teksts tiek pārveidots atpakaļ vienkāršā tekstā, izmantojot to pašu šifrēšanas algoritmu un atslēgu.

Node.js kriptogrāfijas modulis nodrošina atbalstu dažādiem šifrēšanas un atšifrēšanas algoritmiem, tostarp AES (uzlabotais šifrēšanas standarts), DES (datu šifrēšanas standarts) un RSA (Rivests–Šamirs–Adlemans).

Kā šifrēt datus pakalpojumā Node.js, izmantojot šifrēšanas moduli

Varat šifrēt datus, izmantojot crypto.createCipheriv() metode, kas kā ievadi izmanto šifrēšanas algoritmu, slepeno atslēgu un inicializācijas vektoru. Slepenā atslēga ir atkarīga no jūsu izmantotā šifrēšanas algoritma. Piemēram, priekš aes-256 algoritms iekšā CBC režīmā atslēgas garumam jābūt 32 baitiem.

Metode atgriež a Šifrs objektu, kuru varat izmantot, lai šifrētu datus, izmantojot Atjaunināt() un galīgais () metodes. Šifrētie dati parasti tiek attēloti kā heksadecimālā virkne vai buferis.

Piemēram:

konst kriptovalūta = pieprasīt("kripto");

// Izveidojiet slepeno atslēgu šifrēšanai un atšifrēšanai.
konst secretKey = crypto.randomBytes(32);

// Ģenerējiet inicializācijas vektoru
konst iv = crypto.randomBytes(16);

// šifrējamie dati
konst vienkāršais teksts = "Šī ir slepena ziņa";

// izveidot šifra objektu
konst šifrs = crypto.createCipheriv("aes-256-cbc", SecretKey, iv);

// šifrēt datus
ļaut encryptedText = cipher.update (plainText, "utf-8", "hex");

// pabeidz šifrēšanu
encryptedText += cipher.final("hex");

konsole.log (šifrēts teksts);

Iepriekš sniegtajā piemērā ir parādīts, kā var šifrēt vienkāršu tekstu, izmantojot aes-256 CBC režīmā, izmantojot šifrēšanas moduli. Tas ģenerē slepeno atslēgu un inicializācijas vektoru, izmantojot crypto.randomBytes metodi. Pēc tam izveido šifra objektu, izmantojot crypto.createCipheriv metodi un šifrē vienkāršu īsziņu, izmantojot cipher.update un šifrs.fināls metodes.

Rezultāts ir šifrētā ziņojuma heksadecimālā virkne, kuru varat atšifrēt, izmantojot to pašu slepeno atslēgu un IV.

Kā atšifrēt datus pakalpojumā Node.js, izmantojot šifrēšanas moduli

Jūs varat atšifrēt šifrētus datus, izmantojot šifrēšanas moduli crypto.createDecipheriv() metode, kas kā ievadi izmanto atšifrēšanas algoritmu, slepeno atslēgu un inicializācijas vektoru. Metode atgriež a Atšifrēt objektu, ko varat izmantot, lai atšifrētu datus, izmantojot Decipher.update() un Decipher.final() metodes.

Piemēram:

// izveidot atšifrēšanas objektu
konst atšifrēt = crypto.createDecipheriv("aes-256-cbc", SecretKey, iv);

// atšifrēt datus
ļaut decryptedText = atšifrēt.atjaunināt (šifrētsText, "hex", "utf-8");

// pabeidz atšifrēšanu
decryptedText += decrypted.final("utf-8");

konsole.log (atšifrētsTeksts); // Šī ir slepena ziņa

Iepriekš minētais piemērs parāda, kā varat atšifrēt šifrētus datus, izmantojot to pašu algoritmu, slepeno atslēgu un inicializācijas vektoru, ar kuru tos šifrējāt.

Tas izveido atšifrēšanas objektu, izmantojot crypto.createDecipheriv metodi. Pēc tam tas atšifrē datus, izmantojot atšifrēt.atjaunināt metode, kas izmanto datus, ievades kodējumu un izvades kodējumu kā argumentus. Visbeidzot, tas pabeidz atšifrēšanas procesu, izmantojot atšifrēt.galīgs metodi. Šīs metodes izsaukšana nodrošina, ka Decipher objektu ilgāk var izmantot datu atšifrēšanai. Rezultāts ir vienkārša teksta virkne.

Šifrēšana un atšifrēšana ir ļoti svarīga, lai aizsargātu sensitīvus datus un saglabātu to konfidencialitāti. Viņiem ir dažādas reālās pasaules lietojumprogrammas e-komercijā, tiešsaistes bankās, datu glabāšanā un citās jomās.

Citas Node.js kriptogrāfijas moduļa lietojumprogrammas

Papildus jaukšanai, kriptogrāfiski drošu nejaušu datu ģenerēšanai un šifrēšanai un atšifrēšanai varat izmantot arī Node.js kriptogrāfijas modulis, lai parakstītu un pārbaudītu ciparparakstus, kas palīdz pārbaudīt digitālo parakstu autentiskumu un integritāti dokumentus. Turklāt varat izmantot kriptogrāfijas moduli, lai nodrošinātu datu pārraides straumes, lai novērstu datu viltošanu un noklausīšanos pārsūtīšanas laikā.