Node.js kryptomodul effektiviserar processen för att utföra kryptografiska operationer. Så här använder du den.

Kryptografi är metoden att säkra kommunikation och data genom att konvertera dem till format som endast auktoriserade parter kan dechiffrera.

Node.js krypto modulen är en inbyggd modul som ger kryptografisk funktionalitet till Node.js-applikationer. Det erbjuder en rad kryptografiska funktioner, inklusive kryptering, dekryptering, hash, digitala signaturer, säker generering av slumptal och mer.

Här kommer du att utforska de olika applikationerna för Node.js kryptomodul och hur du kan använda dem för att säkra dina applikationer.

Hashing

Hashing är en enkelriktad kryptografisk teknik som du kan använda för att omvandla en given nyckel eller sträng till en utdata med fast storlek som kallas en hash eller sammanfattning.

Hashing är en enkelriktad funktion som innebär att när du hash en nyckel eller sträng kan du inte få det ursprungliga värdet från den genererade hashen.

Node.js kryptomodul stöder olika hashfunktioner som SHA-256, SHA-512, MD5 och mer.

instagram viewer

Du kan hasha data med hjälp av kryptomodulens skapaHash metod, som tar hashalgoritmen som ett argument. Metoden returnerar en Hash objekt, som du kan använda för att hasha data med hjälp av uppdatering och smälta metoder.

Till exempel:

konst krypto = behöva("krypto");

konst data = "Lösenord";

// skapar hash-objekt
konst hashAlgo = crypto.createHash('sha256')

// skickar data som ska hashas
hashAlgo.update (data);

// Skapar hashen i det format som krävs
konst hash = hashAlgo.digest("hex");

trösta.logga(`Hash: ${hash}`);

I exemplet ovan är kryptomodulens skapaHash skapade ett hashobjekt med sha256 hashningsalgoritm. De uppdatering metod på hash-objektet tar indata och hashar den. Sedan smälta metoden tar en kodningsparameter, anger utdata-hashvärdeformatet och returnerar hashen i det angivna formatet (hex).

Hashing är användbart för att verifiera integriteten hos data, lösenordslagring, digitala signaturer och mer.

Generera slumpmässiga data

Kryptografiskt säkra slumpmässiga data krävs ofta i kryptografi, spel och testning för olika användningsfall.

I kryptografi kan du använda slumpmässiga data för att generera nycklar, salter och initialiseringsvektorer för krypterings- och dekrypteringsalgoritmer.

I spel kan du använda slumpmässiga data för att generera spelnivåer, karaktärer, föremål och mer för att förhindra fusk och se till att spelet inte är förutsägbart.

Vid testning kan du använda den för att simulera verkliga scenarier och kantfall.

Du kan generera slumpmässig data med hjälp av Node.js kryptomodul randomBytes metod. Denna metod tar ett tal som ett argument och returnerar en buffert med slumpmässiga byte.

Detta nummer representerar storleken på de byte som metoden kommer att generera. Antalet får dock inte vara större än 2³¹ - 1 (2147483647), vilket är det maximala värdet som kan representeras av ett 32-bitars heltal med tecken.

Till exempel:

konst krypto = behöva("krypto");

// skapa slumpmässiga bytes
konst randomBytes = crypto.randomBytes(32);

// konvertera till hex
konst randomString = randomBytes.toString("hex");

trösta.log (randomString); //loggar slumpmässig sträng till konsolen

Kodblocket ovan genererar och loggar en slumpmässig sträng med 64 hexadecimala tecken (32 byte) till konsolen.

Att generera kryptografiskt säkra slumpmässiga data är viktigt eftersom det säkerställer att slumpdata inte är förutsägbara och att angripare inte kan manipulera eller gissa dem.

Kryptering och dekryptering i Node.js

Kryptering är processen att omvandla vanlig text till en oläsbar form (krypteringstext) med en krypteringsalgoritm och en hemlig nyckel.

Dekryptering är motsatsen till kryptering. Det är processen att konvertera chiffertexten tillbaka till vanlig text med samma krypteringsalgoritm och nyckel.

Node.js kryptomodul ger stöd för olika krypterings- och dekrypteringsalgoritmer, inklusive AES (Advanced Encryption Standard), DES (Data Encryption Standard) och RSA (Rivest–Shamir–Adleman).

Hur man krypterar data i Node.js med hjälp av kryptomodulen

Du kan kryptera data med hjälp av crypto.createCipheriv() metod, som tar krypteringsalgoritmen, den hemliga nyckeln och en initialiseringsvektor som indata. Den hemliga nyckeln är beroende av krypteringsalgoritmen du använder. Till exempel för aes-256-algoritmen i CBC läge måste nyckellängden vara 32 byte.

Metoden returnerar en Chiffer objekt, som du kan använda för att kryptera data med hjälp av uppdatering() och slutlig() metoder. Den krypterade datan representeras vanligtvis som en hexadecimal sträng eller en buffert.

Till exempel:

konst krypto = behöva("krypto");

// Skapa en hemlig nyckel för kryptering och dekryptering.
konst secretKey = crypto.randomBytes(32);

// Generera en initialiseringsvektor
konst iv = crypto.randomBytes(16);

// data som ska krypteras
konst vanlig text = "Detta är ett hemligt meddelande";

// skapa chifferobjekt
konst cipher = crypto.createCipheriv("aes-256-cbc", secretKey, iv);

// kryptera data
låta encryptedText = cipher.update (plainText, "utf-8", "hex");

// slutföra krypteringen
encryptedText += cipher.final("hex");

trösta.log (krypterad text);

Exemplet ovan visar hur du kan kryptera vanlig text med aes-256 i CBC-läge med kryptomodulen. Den genererar en hemlig nyckel och en initialiseringsvektor med hjälp av crypto.randomBytes metod. Skapar sedan ett chifferobjekt med hjälp av crypto.createCipheriv metoden och krypterar det vanliga textmeddelandet med hjälp av chiffer.uppdatering och chiffer.final metoder.

Resultatet är en hexadecimal sträng av det krypterade meddelandet, som du kan dekryptera med samma hemliga nyckel och IV.

Hur man dekrypterar data i Node.js med hjälp av kryptomodulen

Du kan dekryptera krypterad data med hjälp av kryptomodulens crypto.createDecipheriv() metod, som tar dekrypteringsalgoritmen, den hemliga nyckeln och en initialiseringsvektor som indata. Metoden returnerar en Dechiffrera objekt, som du kan använda för att dekryptera data med hjälp av Decipher.update() och Decipher.final() metoder.

Till exempel:

// skapa Dechiffrera objekt
konst decipher = crypto.createDecipheriv("aes-256-cbc", secretKey, iv);

// dekryptera data
låta decryptedText = decipher.update (encryptedText, "hex", "utf-8");

// slutföra dekrypteringen
decryptedText += decipher.final("utf-8");

trösta.log (dekrypterad text); // Detta är ett hemligt meddelande

Exemplet ovan visar hur du kan dekryptera krypterad data med samma algoritm, hemliga nyckel och initialiseringsvektor som du krypterade den med.

Den skapar ett Decipher-objekt med hjälp av crypto.createDecipheriv metod. Sedan dekrypterar den data med hjälp av dechiffrera.uppdatering metod, som tar data, indatakodning och utdatakodning som argument. Slutligen avslutar den dekrypteringsprocessen med hjälp av dechiffrera.final metod. Att anropa denna metod säkerställer att Decipher-objektet längre kan användas för att dekryptera data. Resultatet är en vanlig textsträng.

Kryptering och dekryptering är avgörande för att skydda känslig data och upprätthålla dess konfidentialitet. De har olika verkliga tillämpningar inom e-handel, onlinebank, datalagring och mer.

Andra tillämpningar av Node.js kryptomodul

Förutom att hasha, generera kryptografiskt säkra slumpmässiga data och kryptering och dekryptering, kan du också använda Node.js kryptomodul för att signera och verifiera digitala signaturer, vilket hjälper till att verifiera äktheten och integriteten hos digitala dokument. Dessutom kan du använda kryptomodulen för att säkra strömmar för dataöverföring för att förhindra datamanipulering och avlyssning under överföring.