De cryptomodule Node.js stroomlijnt het proces van het uitvoeren van cryptografische bewerkingen. Hier is hoe het te gebruiken.

Cryptografie is de praktijk van het beveiligen van communicatie en gegevens door ze om te zetten in formaten die alleen geautoriseerde partijen kunnen ontcijferen.

De Node.js cryptovaluta module is een ingebouwde module die cryptografische functionaliteit biedt aan Node.js-applicaties. Het biedt een scala aan cryptografische mogelijkheden, waaronder codering, decodering, hashing, digitale handtekeningen, veilig genereren van willekeurige getallen en meer.

Hier verken je de verschillende toepassingen van de Node.js cryptomodule en hoe je deze kunt gebruiken om je toepassingen te beveiligen.

Hashen

Hashing is een eenrichtingscryptografische techniek die u kunt gebruiken om een ​​bepaalde sleutel of tekenreeks om te zetten in een uitvoer met een vaste grootte die bekend staat als een hash of samenvatting.

Hashing is een eenrichtingsfunctie, wat betekent dat wanneer u een sleutel of tekenreeks hasht, u de oorspronkelijke waarde niet uit de gegenereerde hash kunt halen.

instagram viewer

De cryptomodule Node.js ondersteunt verschillende hashing-functies zoals SHA-256, SHA-512, MD5 en meer.

U kunt gegevens hashen met behulp van de cryptomodules createHash methode, die het hash-algoritme als argument gebruikt. De methode retourneert a Hasj object, dat u kunt gebruiken om de gegevens te hashen met behulp van de update En verteren methoden.

Bijvoorbeeld:

const crypto = vereisen('crypto');

const gegevens = "wachtwoord";

// hash-object maken
const hashAlgo = crypto.createHash('sha256')

// doorgeven van de gegevens die moeten worden gehasht
hashAlgo.update (gegevens);

// De hash maken in het vereiste formaat
const hash = hashAlgo.digest('hex');

troosten.log(`Hash: ${hash}`);

In het bovenstaande voorbeeld is de cryptomodule createHash een hash-object gemaakt met de sha256 hash-algoritme. De update methode op het hash-object neemt de invoergegevens en hasht deze. Dan de verteren methode neemt een coderingsparameter, specificeert het formaat van de hash-waarde van de uitvoer, en retourneert de hash in het opgegeven formaat (hex).

Hashing is handig voor het verifiëren van de integriteit van gegevens, wachtwoordopslag, digitale handtekeningen en meer.

Willekeurige gegevens genereren

Cryptografisch beveiligde willekeurige gegevens zijn vaak vereist in cryptografie, gaming en testen voor verschillende gebruikssituaties.

In cryptografie kunt u willekeurige gegevens gebruiken om sleutels, salts en initialisatievectoren te genereren voor coderings- en decoderingsalgoritmen.

Tijdens het gamen kun je willekeurige gegevens gebruiken om spelniveaus, personages, items en meer te genereren om valsspelen te voorkomen en ervoor te zorgen dat het spel niet voorspelbaar is.

Tijdens het testen kunt u het gebruiken om real-world scenario's en randgevallen te simuleren.

U kunt willekeurige gegevens genereren met behulp van de Node.js cryptomodules willekeurigeBytes methode. Deze methode neemt een getal als argument en retourneert een buffer van willekeurige bytes.

Dit getal vertegenwoordigt de grootte van de bytes die de methode zal genereren. Het aantal mag echter niet groter zijn dan 2³¹ - 1 (2147483647), wat de maximale waarde is die kan worden weergegeven door een 32-bits geheel getal met teken.

Bijvoorbeeld:

const crypto = vereisen("crypto");

// creëer willekeurige bytes
const randomBytes = crypto.randomBytes(32);

// converteren naar hex
const randomString = randomBytes.toString("hex");

troosten.log (willekeurigeString); //logt willekeurige tekenreeks naar de console

Het codeblok hierboven genereert en logt een willekeurige reeks van 64 hexadecimale tekens (32 bytes) in de console.

Het genereren van cryptografisch beveiligde willekeurige gegevens is belangrijk omdat het ervoor zorgt dat de willekeurige gegevens niet voorspelbaar zijn en dat aanvallers ze niet kunnen manipuleren of raden.

Versleuteling en ontsleuteling in Node.js

Versleuteling is het proces waarbij platte tekst wordt omgezet in een onleesbare vorm (cijfertekst) met behulp van een coderingsalgoritme en een geheime sleutel.

Decryptie is het omgekeerde van encryptie. Het is het proces waarbij de gecodeerde tekst weer wordt omgezet in platte tekst met hetzelfde coderingsalgoritme en dezelfde sleutel.

De cryptomodule Node.js biedt ondersteuning voor verschillende coderings- en decoderingsalgoritmen, inclusief AES (Advanced Encryption Standard), DES (Data Encryption Standard) en RSA (Rivest-Shamir-Adleman).

Gegevens versleutelen in Node.js met behulp van de cryptomodule

U kunt gegevens versleutelen met behulp van de crypto.createCipheriv() methode, die het coderingsalgoritme, de geheime sleutel en een initialisatievector als invoer gebruikt. De geheime sleutel is afhankelijk van het coderingsalgoritme dat u gebruikt. Bijvoorbeeld voor het aes-256-algoritme in CBC modus moet de sleutellengte 32 bytes zijn.

De methode retourneert a Cijfer object, dat u kunt gebruiken om de gegevens te coderen met behulp van de update() En laatste() methoden. De versleutelde gegevens worden doorgaans weergegeven als een hexadecimale tekenreeks of een buffer.

Bijvoorbeeld:

const crypto = vereisen("crypto");

// Genereer een geheime sleutel voor codering en decodering.
const secretKey = crypto.randomBytes(32);

// Genereer een initialisatievector
const iv = crypto.randomBytes(16);

// gegevens die moeten worden versleuteld
const gewone tekst = "Dit is een geheim bericht";

// maak een coderingsobject
const cijfer = crypto.createCipheriv("aes-256-cbc", geheime sleutel, iv);

// versleutel de gegevens
laten versleuteldeTekst = cipher.update (plainText, "utf-8", "hex");

// voltooi de codering
versleuteldeTekst += cipher.final("hex");

troosten.log (gecodeerde tekst);

Het bovenstaande voorbeeld laat zien hoe u platte tekst kunt coderen met behulp van aes-256 in CBC-modus met behulp van de cryptomodule. Het genereert een geheime sleutel en een initialisatievector met behulp van de crypto.randomBytes methode. Creëert vervolgens een cipher-object met behulp van de crypto.createCipheriv methode, en versleutelt het platte tekstbericht met behulp van de cijfer.update En cijfer.finale methoden.

Het resultaat is een hexadecimale reeks van het versleutelde bericht, die u kunt ontsleutelen met dezelfde geheime sleutel en IV.

Gegevens decoderen in Node.js met behulp van de cryptomodule

U kunt versleutelde gegevens decoderen met behulp van de cryptomodules crypto.createDecipheriv() methode, die het decoderingsalgoritme, de geheime sleutel en een initialisatievector als invoer gebruikt. De methode retourneert a Ontcijferen object, dat u kunt gebruiken om de gegevens te decoderen met behulp van de Ontcijfer.update() En Ontcijfer.final() methoden.

Bijvoorbeeld:

// maak een Decipher-object
const ontcijferen = crypto.creëerOntcijferiv("aes-256-cbc", geheime sleutel, iv);

// ontsleutel de gegevens
laten decryptedText = decipher.update (encryptedText, "hex", "utf-8");

// voltooi de decodering
decryptedText += decipher.final("utf-8");

troosten.log (gedecodeerde tekst); // Dit is een geheim bericht

Het bovenstaande voorbeeld laat zien hoe u versleutelde gegevens kunt ontsleutelen met hetzelfde algoritme, dezelfde geheime sleutel en dezelfde initialisatievector waarmee u ze versleutelde.

Het maakt een Decipher-object met behulp van de crypto.createDecipheriv methode. Vervolgens decodeert het de gegevens met behulp van de ontcijfer.update methode, die de gegevens, invoercodering en uitvoercodering als argumenten gebruikt. Ten slotte beëindigt het het decoderingsproces met behulp van de ontcijferen.finale methode. Het aanroepen van deze methode zorgt ervoor dat het Decipher-object niet langer kan worden gebruikt om gegevens te decoderen. Het resultaat is een tekenreeks met platte tekst.

Versleuteling en ontsleuteling zijn cruciaal voor het beschermen van gevoelige gegevens en het behouden van de vertrouwelijkheid ervan. Ze hebben verschillende real-world toepassingen in e-commerce, online bankieren, gegevensopslag en meer.

Andere toepassingen van de Node.js cryptomodule

Naast hashing, het genereren van cryptografisch beveiligde willekeurige gegevens, en encryptie en decryptie, kunt u ook de Node.js cryptomodule voor het ondertekenen en verifiëren van digitale handtekeningen, die helpen bij het verifiëren van de authenticiteit en integriteit van digitaal documenten. Bovendien kunt u de cryptomodule gebruiken om streams voor datatransmissie te beveiligen om datamanipulatie en afluisteren tijdens de transmissie te voorkomen.