Node.js kryptomodul effektiviserer prosessen med å utføre kryptografiske operasjoner. Slik bruker du den.
Kryptografi er praksisen med å sikre kommunikasjon og data ved å konvertere dem til formater som kun autoriserte parter kan tyde.
Node.js krypto modul er en innebygd modul som gir kryptografisk funksjonalitet til Node.js-applikasjoner. Den tilbyr en rekke kryptografiske funksjoner, inkludert kryptering, dekryptering, hashing, digitale signaturer, sikker generering av tilfeldige tall og mer.
Her vil du utforske de ulike applikasjonene til Node.js kryptomodul og hvordan du kan bruke dem til å sikre applikasjonene dine.
Hashing
Hashing er en enveis kryptografisk teknikk som du kan bruke til å transformere en gitt nøkkel eller streng til en utdata med fast størrelse kjent som en hash eller digest.
Hashing er en enveisfunksjon som betyr at når du hash en nøkkel eller streng, kan du ikke få den opprinnelige verdien fra den genererte hashen.
Node.js-kryptomodulen støtter ulike hashing-funksjoner som SHA-256, SHA-512, MD5 og mer.
Du kan hash data ved hjelp av kryptomodulen oppretteHash metode, som tar hashing-algoritmen som et argument. Metoden returnerer en Hash objekt, som du kan bruke til å hashe dataene ved hjelp av Oppdater og fordøye metoder.
For eksempel:
konst krypto = krever('krypto');
konst data = "passord";
// oppretter hash-objekt
konst hashAlgo = crypto.createHash('sha256')// sender dataene som skal hashes
hashAlgo.update (data);// Opprette hashen i ønsket format
konst hash = hashAlgo.digest('hex');
konsoll.Logg(`Hash: ${hash}`);
I eksemplet ovenfor er kryptomodulen oppretteHash opprettet et hashing-objekt med sha256 hashing-algoritme. De Oppdater metoden på hash-objektet tar inndataene og hasheser dem. Og så fordøye metoden tar en kodingsparameter, spesifiserer utdata-hash-verdiformatet, og returnerer hashen i det spesifiserte formatet (hex).
Hashing er nyttig for å verifisere integriteten til data, passordlagring, digitale signaturer og mer.
Generering av tilfeldige data
Kryptografisk sikre tilfeldige data er ofte nødvendig i kryptografi, spill og testing for ulike brukstilfeller.
I kryptografi kan du bruke tilfeldige data til å generere nøkler, salter og initialiseringsvektorer for krypterings- og dekrypteringsalgoritmer.
I spill kan du bruke tilfeldige data til å generere spillnivåer, karakterer, gjenstander og mer for å forhindre juks og sørge for at spillet ikke er forutsigbart.
I testing kan du bruke den til å simulere virkelige scenarier og kantsaker.
Du kan generere tilfeldige data ved å bruke Node.js-kryptomodulen randomBytes metode. Denne metoden tar et tall som et argument og returnerer en buffer med tilfeldige byte.
Dette tallet representerer størrelsen på bytene metoden vil generere. Antallet må imidlertid ikke være større enn 2³¹ - 1 (2147483647), som er den maksimale verdien som kan representeres av et 32-bits heltall med fortegn.
For eksempel:
konst krypto = krever("krypto");
// lag tilfeldige bytes
konst randomBytes = crypto.randomBytes(32);// konverter til hex
konst randomString = randomBytes.toString("hex");
konsoll.log (randomString); //logger tilfeldig streng til konsollen
Kodeblokken ovenfor genererer og logger en tilfeldig streng på 64 heksadesimale tegn (32 byte) til konsollen.
Generering av kryptografisk sikre tilfeldige data er viktig fordi det sikrer at de tilfeldige dataene ikke er forutsigbare og at angripere ikke kan manipulere eller gjette dem.
Kryptering og dekryptering i Node.js
Kryptering er prosessen med å transformere ren tekst til en uleselig form (krypteringstekst) ved hjelp av en krypteringsalgoritme og en hemmelig nøkkel.
Dekryptering er det motsatte av kryptering. Det er prosessen med å konvertere chifferteksten tilbake til ren tekst ved å bruke samme krypteringsalgoritme og nøkkel.
Node.js kryptomodul gir støtte for ulike krypterings- og dekrypteringsalgoritmer, inkludert AES (Advanced Encryption Standard), DES (Data Encryption Standard) og RSA (Rivest–Shamir–Adleman).
Hvordan kryptere data i Node.js ved hjelp av kryptomodulen
Du kan kryptere data ved å bruke crypto.createCipheriv() metode, som tar krypteringsalgoritmen, hemmelig nøkkel og en initialiseringsvektor som input. Den hemmelige nøkkelen er avhengig av krypteringsalgoritmen du bruker. For eksempel for aes-256-algoritmen i CBC modus, må nøkkellengden være 32 byte.
Metoden returnerer en Chiffer objekt, som du kan bruke til å kryptere dataene ved hjelp av Oppdater() og endelig() metoder. De krypterte dataene er vanligvis representert som en heksadesimal streng eller en buffer.
For eksempel:
konst krypto = krever("krypto");
// Generer en hemmelig nøkkel for kryptering og dekryptering.
konst secretKey = crypto.randomBytes(32);// Generer en initialiseringsvektor
konst iv = crypto.randomBytes(16);// data som skal krypteres
konst ren tekst = "Dette er en hemmelig melding";// lag chifferobjekt
konst cipher = crypto.createCipheriv("aes-256-cbc", hemmelig nøkkel, iv);// krypter dataene
la encryptedText = cipher.update (plainText, "utf-8", "hex");// fullfør krypteringen
kryptert tekst += cipher.final("hex");
konsoll.log (kryptert tekst);
Eksemplet ovenfor viser hvordan du kan kryptere ren tekst ved å bruke aes-256 i CBC-modus ved å bruke kryptomodulen. Den genererer en hemmelig nøkkel og en initialiseringsvektor ved å bruke crypto.randomBytes metode. Deretter oppretter et chifferobjekt ved hjelp av crypto.createCipheriv metoden, og krypterer ren tekstmelding ved hjelp av chiffer.oppdatering og cipher.final metoder.
Resultatet er en heksadesimal streng av den krypterte meldingen, som du kan dekryptere med den samme hemmelige nøkkelen og IV.
Hvordan dekryptere data i Node.js ved hjelp av kryptomodulen
Du kan dekryptere krypterte data ved hjelp av kryptomodulen crypto.createDecipheriv() metode, som tar dekrypteringsalgoritmen, hemmelig nøkkel og en initialiseringsvektor som input. Metoden returnerer en Dechiffrere objekt, som du kan bruke til å dekryptere dataene ved hjelp av Decipher.update() og Decipher.final() metoder.
For eksempel:
// opprette Dechiffreringsobjekt
konst decipher = crypto.createDecipheriv("aes-256-cbc", hemmelig nøkkel, iv);// dekrypter dataene
la decryptedText = decipher.update (encryptedText, "hex", "utf-8");// fullfør dekrypteringen
decryptedText += decipher.final("utf-8");
konsoll.log (dekryptert tekst); // Dette er en hemmelig melding
Eksemplet ovenfor viser hvordan du kan dekryptere krypterte data ved å bruke samme algoritme, hemmelige nøkkel og initialiseringsvektor som du krypterte dem med.
Den lager et Dechiffreringsobjekt ved å bruke crypto.createDecipheriv metode. Deretter dekrypterer den dataene ved hjelp av dechiffrere.oppdatering metode, som tar data, input-koding og output-koding som argumenter. Til slutt avslutter den dekrypteringsprosessen ved å bruke dechiffrere.finale metode. Å kalle denne metoden sikrer at Decipher-objektet lenger kan brukes til å dekryptere data. Resultatet er en ren tekststreng.
Kryptering og dekryptering er avgjørende for å beskytte sensitive data og opprettholde konfidensialitet. De har ulike virkelige applikasjoner innen e-handel, nettbank, datalagring og mer.
Andre applikasjoner av Node.js kryptomodul
I tillegg til hashing, generering av kryptografisk sikre tilfeldige data og kryptering og dekryptering, kan du også bruke Node.js kryptomodul for å signere og verifisere digitale signaturer, som bidrar til å verifisere ektheten og integriteten til digitale dokumenter. I tillegg kan du bruke kryptomodulen til å sikre strømmer for dataoverføring for å forhindre datatukling og avlytting under overføring.