Node.js kryptomodul strømliner processen med at udføre kryptografiske operationer. Sådan bruger du det.
Kryptografi er praksis med at sikre kommunikation og data ved at konvertere dem til formater, som kun autoriserede parter kan dechifrere.
Node.js krypto modul er et indbygget modul, der giver kryptografisk funktionalitet til Node.js-applikationer. Det tilbyder en række kryptografiske muligheder, herunder kryptering, dekryptering, hashing, digitale signaturer, sikker generering af tilfældige tal og mere.
Her vil du udforske de forskellige applikationer af Node.js kryptomodul, og hvordan du kan bruge dem til at sikre dine applikationer.
Hashing
Hashing er en envejs kryptografisk teknik som du kan bruge til at transformere en given nøgle eller streng til et output med fast størrelse kendt som en hash eller digest.
Hashing er en envejsfunktion, hvilket betyder, at når du hash en nøgle eller streng, kan du ikke få den oprindelige værdi fra den genererede hash.
Node.js-kryptomodulet understøtter forskellige hashing-funktioner såsom SHA-256, SHA-512, MD5 og mere.
Du kan hash data ved hjælp af kryptomodulets skabeHash metode, som tager hashing-algoritmen som et argument. Metoden returnerer en Hash objekt, som du kan bruge til at hash dataene ved hjælp af opdatering og fordøje metoder.
For eksempel:
konst krypto = kræve('krypto');
konst data = "adgangskode";
// oprettelse af hash-objekt
konst hashAlgo = crypto.createHash('sha256')// videregivelse af de data, der skal hash
hashAlgo.update (data);// Oprettelse af hashen i det påkrævede format
konst hash = hashAlgo.digest('hex');
konsol.log(`Hash: ${hash}`);
I eksemplet ovenfor er kryptomodulets skabeHash oprettet et hashing-objekt med sha256 hashing-algoritme. Det opdatering metoden på hash-objektet tager inputdataene og hasheser dem. Derefter fordøje metoden tager en kodningsparameter, der angiver output-hashværdiformatet og returnerer hashen i det angivne format (hex).
Hashing er nyttigt til at verificere integriteten af data, adgangskodelagring, digitale signaturer og mere.
Generering af tilfældige data
Kryptografisk sikre tilfældige data er ofte påkrævet i kryptografi, spil og test til forskellige brugssager.
I kryptografi kan du bruge tilfældige data til at generere nøgler, salte og initialiseringsvektorer til krypterings- og dekrypteringsalgoritmer.
I spil kan du bruge tilfældige data til at generere spilniveauer, karakterer, genstande og mere for at forhindre snyd og sikre, at spillet ikke er forudsigeligt.
I test kan du bruge det til at simulere scenarier i den virkelige verden og kantsager.
Du kan generere tilfældige data ved hjælp af Node.js-kryptomodulet randomBytes metode. Denne metode tager et tal som et argument og returnerer en buffer af tilfældige bytes.
Dette tal repræsenterer størrelsen af de bytes, som metoden vil generere. Antallet må dog ikke være større end 2³¹ - 1 (2147483647), som er den maksimale værdi, der kan repræsenteres af et 32-bit fortegnet heltal.
For eksempel:
konst krypto = kræve("krypto");
// opret tilfældige bytes
konst randomBytes = crypto.randomBytes(32);// konverter til hex
konst randomString = randomBytes.toString("hex");
konsol.log (randomString); //loger tilfældig streng til konsollen
Kodeblokken ovenfor genererer og logger en tilfældig streng på 64 hexadecimale tegn (32 bytes) til konsollen.
Generering af kryptografisk sikre tilfældige data er vigtigt, fordi det sikrer, at de tilfældige data ikke er forudsigelige, og at angribere ikke kan manipulere eller gætte dem.
Kryptering og dekryptering i Node.js
Kryptering er processen med at omdanne almindelig tekst til en ulæselig form (krypteringstekst) ved hjælp af en krypteringsalgoritme og en hemmelig nøgle.
Dekryptering er det omvendte af kryptering. Det er processen med at konvertere krypteringsteksten tilbage til almindelig tekst ved hjælp af den samme krypteringsalgoritme og nøgle.
Node.js-krypteringsmodulet understøtter forskellige krypterings- og dekrypteringsalgoritmer, inklusive AES (Advanced Encryption Standard), DES (Data Encryption Standard) og RSA (Rivest–Shamir–Adleman).
Sådan krypteres data i Node.js ved hjælp af kryptomodulet
Du kan kryptere data ved hjælp af crypto.createCipheriv() metode, som tager krypteringsalgoritmen, den hemmelige nøgle og en initialiseringsvektor som input. Den hemmelige nøgle er afhængig af den krypteringsalgoritme, du bruger. For eksempel for aes-256 algoritmen i CBC tilstand, skal nøglelængden være 32 bytes.
Metoden returnerer en Chiffer objekt, som du kan bruge til at kryptere dataene ved hjælp af update() og endelig() metoder. De krypterede data er typisk repræsenteret som en hexadecimal streng eller en buffer.
For eksempel:
konst krypto = kræve("krypto");
// Generer en hemmelig nøgle til kryptering og dekryptering.
konst secretKey = crypto.randomBytes(32);// Generer en initialiseringsvektor
konst iv = crypto.randomBytes(16);// data, der skal krypteres
konst almindelig tekst = "Dette er en hemmelig besked";// opret chifferobjekt
konst cipher = crypto.createCipheriv("aes-256-cbc", hemmelig nøgle, iv);// krypter dataene
lade encryptedText = cipher.update (plainText, "utf-8", "hex");// færdiggør krypteringen
krypteret tekst += cipher.final("hex");
konsol.log (krypteret tekst);
Eksemplet ovenfor viser, hvordan du kan kryptere almindelig tekst ved hjælp af aes-256 i CBC-tilstand ved hjælp af kryptomodulet. Den genererer en hemmelig nøgle og en initialiseringsvektor ved hjælp af crypto.randomBytes metode. Opretter derefter et chifferobjekt ved hjælp af crypto.createCipheriv metode og krypterer almindelig tekstbesked ved hjælp af cipher.update og cipher.final metoder.
Resultatet er en hexadecimal streng af den krypterede besked, som du kan dekryptere ved hjælp af den samme hemmelige nøgle og IV.
Sådan dekrypteres data i Node.js ved hjælp af kryptomodulet
Du kan dekryptere krypterede data ved hjælp af kryptomodulets crypto.createDecipheriv() metode, som tager dekrypteringsalgoritmen, den hemmelige nøgle og en initialiseringsvektor som input. Metoden returnerer en Dechifrere objekt, som du kan bruge til at dekryptere dataene ved hjælp af Decipher.update() og Decipher.final() metoder.
For eksempel:
// opret Dechiffreringsobjekt
konst decipher = crypto.createDecipheriv("aes-256-cbc", hemmelig nøgle, iv);// dekrypter dataene
lade decryptedText = decipher.update (encryptedText, "hex", "utf-8");// færdiggør dekrypteringen
decryptedText += decipher.final("utf-8");
konsol.log (dekrypteret tekst); // Dette er en hemmelig besked
Eksemplet ovenfor viser, hvordan du kan dekryptere krypterede data ved hjælp af den samme algoritme, hemmelige nøgle og initialiseringsvektor, som du krypterede dem med.
Det opretter et Decipher-objekt ved hjælp af crypto.createDecipheriv metode. Derefter dekrypterer den dataene ved hjælp af dechifrere.opdatering metode, som tager data, input-kodning og output-kodning som argumenter. Til sidst afslutter den dekrypteringsprocessen ved hjælp af dechifrere.finale metode. Kaldning af denne metode sikrer, at Decipher-objektet længere kan bruges til at dekryptere data. Resultatet er en almindelig tekststreng.
Kryptering og dekryptering er afgørende for at beskytte følsomme data og bevare deres fortrolighed. De har forskellige applikationer i den virkelige verden inden for e-handel, netbank, datalagring og meget mere.
Andre applikationer af Node.js kryptomodul
Udover hashing, generering af kryptografisk sikre tilfældige data og kryptering og dekryptering, kan du også bruge Node.js kryptomodul til at signere og verificere digitale signaturer, som hjælper med at verificere ægtheden og integriteten af digitale Dokumenter. Derudover kan du bruge kryptomodulet til at sikre streams til datatransmission for at forhindre datamanipulation og aflytning under transmission.