Kryptomodul Node.js zefektivňuje proces provádění kryptografických operací. Zde je návod, jak jej používat.
Kryptografie je způsob zabezpečení komunikace a dat jejich převodem do formátů, které mohou dešifrovat pouze oprávněné strany.
Soubor Node.js krypto modul je vestavěný modul, který poskytuje kryptografické funkce aplikacím Node.js. Nabízí řadu kryptografických funkcí, včetně šifrování, dešifrování, hashování, digitálních podpisů, bezpečného generování náhodných čísel a dalších.
Zde prozkoumáte různé aplikace kryptomodulu Node.js a jak je můžete použít k zabezpečení svých aplikací.
Hašování
Hašování je jednosměrná kryptografická technika který můžete použít k transformaci daného klíče nebo řetězce na výstup s pevnou velikostí známý jako hash nebo digest.
Hašování je jednosměrná funkce, což znamená, že když hashujete klíč nebo řetězec, nemůžete z vygenerovaného hashe získat původní hodnotu.
Kryptomodul Node.js podporuje různé hašovací funkce, jako je SHA-256, SHA-512, MD5 a další.
Data můžete hašovat pomocí krypto modulu
createHash metoda, která bere jako argument hashovací algoritmus. Metoda vrací a hash objekt, který můžete použít k hašování dat pomocí Aktualizace a strávit metody.Například:
konst krypto = vyžadovat('crypto');
konst údaje = "Heslo";
// vytvoření hash objektu
konst hashAlgo = crypto.createHash('sha256')// předání dat k hašování
hashAlgo.update (data);// Vytvoření hashe v požadovaném formátu
konst hash = hashAlgo.digest("hexadecimální");
řídicí panel.log(`Hash: ${hash}`);
Ve výše uvedeném příkladu je kryptomodul createHash vytvořil hashovací objekt s sha256 hashovací algoritmus. The Aktualizace metoda na objektu hash přebírá vstupní data a hashuje je. Potom strávit metoda přebírá parametr kódování, který určuje formát výstupní hodnoty hash, a vrací hodnotu hash v zadaném formátu (hex).
Hašování je užitečné pro ověřování integrity dat, ukládání hesel, digitálních podpisů a dalších.
Generování náhodných dat
Kryptograficky bezpečná náhodná data jsou často vyžadována v kryptografii, hraní her a testování pro různé případy použití.
V kryptografii můžete použít náhodná data ke generování klíčů, solí a inicializačních vektorů pro šifrovací a dešifrovací algoritmy.
Ve hrách můžete použít náhodná data ke generování herních úrovní, postav, předmětů a dalších, abyste zabránili podvádění a zajistili, že hra není předvídatelná.
Při testování jej můžete použít k simulaci reálných scénářů a okrajových případů.
Pomocí šifrovacího modulu Node.js můžete generovat náhodná data randomBytes metoda. Tato metoda bere jako argument číslo a vrací vyrovnávací paměť náhodných bajtů.
Toto číslo představuje velikost bajtů, které metoda vygeneruje. Číslo však nesmí být větší než 2³¹ - 1 (2147483647), což je maximální hodnota, kterou lze reprezentovat 32bitovým celým číslem se znaménkem.
Například:
konst krypto = vyžadovat("krypto");
// vytvořit náhodné bajty
konst randomBytes = crypto.randomBytes(32);// převod na hex
konst randomString = randomBytes.toString("hexadecimální");
řídicí panel.log (randomString); //přihlásí náhodný řetězec do konzole
Výše uvedený blok kódu generuje a zaznamenává náhodný řetězec 64 hexadecimálních znaků (32 bajtů) do konzoly.
Generování kryptograficky bezpečných náhodných dat je důležité, protože zajišťuje, že náhodná data nejsou předvídatelná a útočníci s nimi nemohou manipulovat ani je uhodnout.
Šifrování a dešifrování v Node.js
Šifrování je proces transformace prostého textu do nečitelné podoby (šifrovaný text) pomocí šifrovacího algoritmu a tajného klíče.
Dešifrování je opakem šifrování. Je to proces převodu šifrovaného textu zpět na prostý text pomocí stejného šifrovacího algoritmu a klíče.
Kryptomodul Node.js poskytuje podporu pro různé šifrovací a dešifrovací algoritmy, včetně AES (Advanced Encryption Standard), DES (Data Encryption Standard) a RSA (Rivest–Shamir–Adleman).
Jak šifrovat data v Node.js pomocí krypto modulu
Data můžete šifrovat pomocí crypto.createCipheriv() Metoda, která bere jako vstup šifrovací algoritmus, tajný klíč a inicializační vektor. Tajný klíč závisí na šifrovacím algoritmu, který používáte. Například pro algoritmus aes-256 v CBC v režimu, délka klíče musí být 32 bajtů.
Metoda vrací a Šifra objekt, který můžete použít k šifrování dat pomocí Aktualizace() a finále() metody. Šifrovaná data jsou typicky reprezentována jako hexadecimální řetězec nebo vyrovnávací paměť.
Například:
konst krypto = vyžadovat("krypto");
// Vygeneruje tajný klíč pro šifrování a dešifrování.
konst tajný klíč = crypto.randomBytes(32);// Vygenerování inicializačního vektoru
konst iv = crypto.randomBytes(16);// data, která mají být zašifrována
konst prostý text = "Toto je tajná zpráva";// vytvořit objekt šifry
konst šifra = crypto.createCipheriv("aes-256-cbc", tajný klíč, iv);// zašifrovat data
nechat encryptedText = cipher.update (plainText, "utf-8", "hexadecimální");// dokončete šifrování
encryptedText += cipher.final("hexadecimální");
řídicí panel.log (šifrovanýText);
Výše uvedený příklad ukazuje, jak můžete šifrovat prostý text pomocí aes-256 v režimu CBC pomocí krypto modulu. Generuje tajný klíč a inicializační vektor pomocí crypto.randomBytes metoda. Poté vytvoří šifrovaný objekt pomocí crypto.createCipheriv a zašifruje zprávu ve formátu prostého textu pomocí šifra.aktualizace a šifra.konečná metody.
Výsledkem je hexadecimální řetězec zašifrované zprávy, který můžete dešifrovat pomocí stejného tajného klíče a IV.
Jak dešifrovat data v Node.js pomocí kryptomodulu
Šifrovaná data můžete dešifrovat pomocí šifrovacího modulu crypto.createDecipheriv() metoda, která bere jako vstup dešifrovací algoritmus, tajný klíč a inicializační vektor. Metoda vrací a Rozluštit objekt, který můžete použít k dešifrování dat pomocí Decipher.update() a Decipher.final() metody.
Například:
// vytvoření objektu Decipher
konst dešifrovat = crypto.createDecipheriv("aes-256-cbc", tajný klíč, iv);// dešifrovat data
nechat decryptedText = decipher.update (encryptedText, "hexadecimální", "utf-8");// dokončete dešifrování
decryptedText += decipher.final("utf-8");
řídicí panel.log (dešifrovanýText); // Toto je tajná zpráva
Výše uvedený příklad ukazuje, jak můžete dešifrovat zašifrovaná data pomocí stejného algoritmu, tajného klíče a inicializačního vektoru, kterým jste je zašifrovali.
Vytvoří objekt Dešifrovat pomocí crypto.createDecipheriv metoda. Poté data dešifruje pomocí dešifrovat.aktualizovat metoda, která bere data, vstupní kódování a výstupní kódování jako argumenty. Nakonec ukončí proces dešifrování pomocí dešifrovat.konečný metoda. Volání této metody zajišťuje, že objekt Decipher lze nadále používat k dešifrování dat. Výsledkem je prostý textový řetězec.
Šifrování a dešifrování jsou zásadní pro ochranu citlivých dat a zachování jejich důvěrnosti. Mají různé reálné aplikace v e-commerce, online bankovnictví, ukládání dat a další.
Další aplikace kryptomodulu Node.js
Kromě hašování, generování kryptograficky bezpečných náhodných dat a šifrování a dešifrování můžete také použít Kryptomul Node.js pro podepisování a ověřování digitálních podpisů, které pomáhají ověřit pravost a integritu digitálních dokumenty. Kromě toho můžete šifrovací modul použít k zabezpečení toků pro přenos dat, aby se zabránilo manipulaci s daty a odposlechu během přenosu.