Kryptografický modul Node.js zefektívňuje proces vykonávania kryptografických operácií. Tu je návod, ako ho použiť.

Kryptografia je spôsob zabezpečenia komunikácie a údajov ich konverziou do formátov, ktoré môžu dešifrovať iba oprávnené strany.

Súbor Node.js kryptomeny modul je vstavaný modul, ktorý poskytuje aplikáciám Node.js kryptografickú funkčnosť. Ponúka celý rad kryptografických možností vrátane šifrovania, dešifrovania, hashovania, digitálnych podpisov, bezpečného generovania náhodných čísel a ďalších.

Tu preskúmate rôzne aplikácie kryptomodulu Node.js a ako ich môžete použiť na zabezpečenie svojich aplikácií.

Hašovanie

Hašovanie je jednosmerná kryptografická technika ktorý môžete použiť na transformáciu daného kľúča alebo reťazca na výstup s pevnou veľkosťou známy ako hash alebo digest.

Hašovanie je jednosmerná funkcia, čo znamená, že keď hashujete kľúč alebo reťazec, nemôžete získať pôvodnú hodnotu z vygenerovaného hashu.

Kryptomodul Node.js podporuje rôzne hašovacie funkcie, ako napríklad SHA-256, SHA-512, MD5 a ďalšie.

instagram viewer

Údaje môžete hašovať pomocou šifrovacieho modulu createHash metóda, ktorá berie ako argument hashovací algoritmus. Metóda vracia a Hash objekt, ktorý môžete použiť na hashovanie údajov pomocou aktualizovať a stráviť metódy.

Napríklad:

konšt krypto = vyžadovať('crypto');

konšt údaje = "heslo";

// vytvorenie hash objektu
konšt hashAlgo = crypto.createHash('sha256')

// odovzdanie údajov, ktoré majú byť hašované
hashAlgo.update (údaje);

// Vytvorenie hash v požadovanom formáte
konšt hash = hashAlgo.digest('hex');

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

Vo vyššie uvedenom príklade je to kryptografický modul createHash vytvoril hašovací objekt s sha256 hashovací algoritmus. The aktualizovať metóda na objekte hash berie vstupné údaje a hashuje ich. Potom stráviť metóda preberá parameter kódovania, ktorý určuje formát výstupnej hodnoty hash a vracia hodnotu hash v zadanom formáte (hex).

Hašovanie je užitočné na overenie integrity údajov, uloženia hesiel, digitálnych podpisov a podobne.

Generovanie náhodných údajov

Kryptograficky bezpečné náhodné údaje sa často vyžadujú v kryptografii, hraní hier a testovaní pre rôzne prípady použitia.

V kryptografii môžete použiť náhodné údaje na generovanie kľúčov, solí a inicializačných vektorov pre šifrovacie a dešifrovacie algoritmy.

V hrách môžete použiť náhodné údaje na generovanie herných úrovní, postáv, predmetov a ďalších, aby ste zabránili podvádzaniu a zabezpečili, že hra nie je predvídateľná.

Pri testovaní ho môžete použiť na simuláciu reálnych scenárov a okrajových prípadov.

Náhodné údaje môžete generovať pomocou šifrovacieho modulu Node.js randomBytes metóda. Táto metóda berie ako argument číslo a vracia vyrovnávaciu pamäť náhodných bajtov.

Toto číslo predstavuje veľkosť bajtov, ktoré metóda vygeneruje. Číslo však nesmie byť väčšie ako 2³¹ - 1 (2147483647), čo je maximálna hodnota, ktorú môže reprezentovať 32-bitové celé číslo so znamienkom.

Napríklad:

konšt krypto = vyžadovať("krypto");

// vytvorí náhodné bajty
konšt randomBytes = crypto.randomBytes(32);

// prevod na hex
konšt randomString = randomBytes.toString("hex");

konzoly.log (randomString); //zaznamená náhodný reťazec do konzoly

Vyššie uvedený blok kódu generuje a zaznamenáva náhodný reťazec 64 hexadecimálnych znakov (32 bajtov) do konzoly.

Generovanie kryptograficky bezpečných náhodných údajov je dôležité, pretože zaisťuje, že náhodné údaje nie sú predvídateľné a útočníci s nimi nemôžu manipulovať ani ich uhádnuť.

Šifrovanie a dešifrovanie v Node.js

Šifrovanie je proces transformácie obyčajného textu do nečitateľnej podoby (zašifrovaný text) pomocou šifrovacieho algoritmu a tajného kľúča.

Dešifrovanie je opakom šifrovania. Je to proces konverzie šifrovaného textu späť na obyčajný text pomocou rovnakého šifrovacieho algoritmu a kľúča.

Kryptomodul Node.js poskytuje podporu pre rôzne šifrovacie a dešifrovacie algoritmy, vrátane AES (Advanced Encryption Standard), DES (Data Encryption Standard) a RSA (Rivest–Shamir–Adleman).

Ako šifrovať dáta v Node.js pomocou krypto modulu

Údaje môžete šifrovať pomocou crypto.createCipheriv() metóda, ktorá berie ako vstup šifrovací algoritmus, tajný kľúč a inicializačný vektor. Tajný kľúč závisí od šifrovacieho algoritmu, ktorý používate. Napríklad pre algoritmus aes-256 v CBC v režime, dĺžka kľúča musí byť 32 bajtov.

Metóda vracia a Šifra objekt, ktorý môžete použiť na šifrovanie údajov pomocou aktualizovať() a Konečný() metódy. Šifrované údaje sú zvyčajne reprezentované ako hexadecimálny reťazec alebo vyrovnávacia pamäť.

Napríklad:

konšt krypto = vyžadovať("krypto");

// Vygenerovanie tajného kľúča na šifrovanie a dešifrovanie.
konšt secretKey = crypto.randomBytes(32);

// Generovanie inicializačného vektora
konšt iv = crypto.randomBytes(16);

// údaje, ktoré sa majú zašifrovať
konšt obyčajný text = "Toto je tajná správa";

// vytvorenie objektu šifry
konšt cipher = crypto.createCipheriv("aes-256-cbc", tajný kľúč, iv);

// zašifrovať dáta
nech encryptedText = cipher.update (obyčajný text, "utf-8", "hex");

// dokončite šifrovanie
encryptedText += cipher.final("hex");

konzoly.log (šifrovanýText);

Vyššie uvedený príklad ukazuje, ako môžete šifrovať obyčajný text pomocou aes-256 v režime CBC pomocou krypto modulu. Generuje tajný kľúč a inicializačný vektor pomocou krypto.randomBytes metóda. Potom vytvorí šifrovaný objekt pomocou crypto.createCipheriv a zašifruje obyčajnú textovú správu pomocou šifra.aktualizácia a šifra.konečná metódy.

Výsledkom je hexadecimálny reťazec zašifrovanej správy, ktorý môžete dešifrovať pomocou rovnakého tajného kľúča a IV.

Ako dešifrovať dáta v Node.js pomocou krypto modulu

Zašifrované údaje môžete dešifrovať pomocou šifrovacieho modulu crypto.createDecipheriv() metóda, ktorá berie ako vstup dešifrovací algoritmus, tajný kľúč a inicializačný vektor. Metóda vracia a Dešifrovať objekt, ktorý môžete použiť na dešifrovanie údajov pomocou Decipher.update() a Decipher.final() metódy.

Napríklad:

// vytvorenie objektu Decipher
konšt dešifrovať = crypto.createDecipheriv("aes-256-cbc", tajný kľúč, iv);

// dešifrovať dáta
nech decryptedText = decipher.update (encryptedText, "hex", "utf-8");

// dokončite dešifrovanie
decryptedText += decipher.final("utf-8");

konzoly.log (decryptedText); // Toto je tajná správa

Vyššie uvedený príklad ukazuje, ako môžete dešifrovať zašifrované údaje pomocou rovnakého algoritmu, tajného kľúča a inicializačného vektora, akým ste ich zašifrovali.

Vytvára objekt Dešifrovať pomocou crypto.createDecipheriv metóda. Potom dešifruje údaje pomocou dešifrovať.aktualizovať metóda, ktorá berie dáta, vstupné kódovanie a výstupné kódovanie ako argumenty. Nakoniec ukončí proces dešifrovania pomocou dešifrovať.konečný metóda. Volanie tejto metódy zaisťuje, že objekt Decipher možno ďalej používať na dešifrovanie údajov. Výsledkom je obyčajný textový reťazec.

Šifrovanie a dešifrovanie sú kľúčové pre ochranu citlivých údajov a zachovanie ich dôvernosti. Majú rôzne reálne aplikácie v elektronickom obchode, online bankovníctve, ukladaní údajov a ďalších.

Ďalšie aplikácie kryptomodulu Node.js

Okrem hashovania, generovania kryptograficky bezpečných náhodných údajov a šifrovania a dešifrovania môžete použiť aj Kryptomul Node.js na podpisovanie a overovanie digitálnych podpisov, ktoré pomáhajú overiť autenticitu a integritu digitálneho obsahu Dokumenty. Okrem toho môžete šifrovací modul použiť na zabezpečenie tokov na prenos údajov, aby ste zabránili manipulácii s údajmi a odpočúvaniu počas prenosu.