Node.js 暗号化モジュールのガイド
Node.js 暗号化モジュールは、暗号化操作を実行するプロセスを合理化します。使用方法は次のとおりです。
暗号化とは、通信とデータを、許可された当事者だけが解読できる形式に変換することによって保護する手法です。
Node.js の暗号モジュールは、Node.js アプリケーションに暗号化機能を提供する組み込みモジュールです。暗号化、復号化、ハッシュ、デジタル署名、安全な乱数生成など、さまざまな暗号化機能を提供します。
ここでは、Node.js 暗号化モジュールのさまざまなアプリケーションと、それらを使用してアプリケーションを保護する方法について説明します。
ハッシュ化
ハッシュは、特定のキーまたは文字列をハッシュまたはダイジェストと呼ばれる固定サイズの出力に変換するために使用できる一方向の暗号化手法です。
ハッシュは一方向関数であり、キーまたは文字列をハッシュする場合、生成されたハッシュから元の値を取得することはできません。
Node.js 暗号化モジュールは、SHA-256、SHA-512、MD5 などのさまざまなハッシュ関数をサポートしています。
暗号化モジュールの createHash を使用してデータをハッシュできます。 メソッド。ハッシュ アルゴリズムを引数として受け取ります。このメソッドは、update を使用してデータをハッシュするために使用できる Hash オブジェクトを返します。 と ダイジェスト >方法。
例えば:
const crypto = require('crypto');
const data = "password";
// creating hash objectconst hashAlgo = crypto.createHash('sha256')
// passing the data to be hashedhashAlgo.update(data);
// Creating the hash in the required formatconst hash = hashAlgo.digest('hex');
console.log(`Hash: ${hash}`); 上の例では、暗号モジュールの createHash は、 を使用してハッシュ オブジェクトを作成しました。 >sha256 ハッシュ アルゴリズム。 アップデート > ハッシュ オブジェクトのメソッドは入力データを取得してハッシュします。次に、ダイジェストメソッドは、出力ハッシュ値の形式を指定するエンコード パラメータを受け取り、指定された形式 (16 進) でハッシュを返します。
ハッシュは、データ、パスワードの保存、デジタル署名などの整合性を検証するのに役立ちます。
ランダムデータの生成
暗号化で安全なランダム データは、暗号化、ゲーム、さまざまなユースケースのテストでしばしば必要となります。
暗号化では、ランダム データを使用して、暗号化および復号化アルゴリズムのキー、ソルト、初期化ベクトルを生成できます。
ゲームでは、ランダム データを使用してゲーム レベル、キャラクター、アイテムなどを生成し、不正行為を防止し、ゲームが予測不可能であることを確認できます。
テストでは、これを使用して現実世界のシナリオやエッジケースをシミュレートできます。
Node.js 暗号化モジュールの randomBytes< を使用してランダム データを生成できます。方法。このメソッドは引数として数値を受け取り、ランダムなバイトのバッファを返します。
この数値は、メソッドが生成するバイトのサイズを表します。ただし、この数値は、32 ビット符号付き整数で表現できる最大値である 2¹ - 1 (2147483647) を超えてはなりません。
例えば:
const crypto = require("crypto");
// create random bytesconst randomBytes = crypto.randomBytes(32);
// convert to hexconst randomString = randomBytes.toString("hex");
console.log(randomString); //logs random string to the console 上記のコード ブロックは、64 個の 16 進文字 (32 バイト) のランダムな文字列を生成し、コンソールに記録します。
暗号的に安全なランダム データを生成することは、ランダム データが予測不可能であり、攻撃者がランダム データを操作したり推測したりできないことを保証するため、重要です。
Node.js での暗号化と復号化
暗号化は、暗号化アルゴリズムと秘密キーを使用して、プレーン テキストを判読できない形式 (暗号テキスト) に変換するプロセスです。
復号化は暗号化の逆です。これは、同じ暗号化アルゴリズムとキーを使用して、暗号文を平文に変換するプロセスです。
Node.js 暗号化モジュールは、AES (Advanced Encryption Standard)、DES (Data Encryption Standard)、RSA (Rivest-Shamir-Adleman) などのさまざまな暗号化および復号化アルゴリズムのサポートを提供します。
crypto モジュールを使用して Node.js でデータを暗号化する方法
データを暗号化するには、crypto.createCipheriv() メソッドを使用します。このメソッドは、暗号化アルゴリズム、秘密キー、および初期化ベクトルを入力として受け取ります。秘密キーは、使用している暗号化アルゴリズムによって異なります。たとえば、CBC モードの aes-256 アルゴリズムの場合、キーの長さは 32 バイトである必要があります。
このメソッドは、Cipher オブジェクトを返します。このオブジェクトを使用して、update() メソッドと final() メソッドを使用してデータを暗号化できます。暗号化されたデータは通常、16 進文字列またはバッファとして表されます。
例えば:
const crypto = require("crypto");
// Generate a secret key for encryption and decryption.const secretKey = crypto.randomBytes(32);
// Generate an initialization vectorconst iv = crypto.randomBytes(16);
// data to be encryptedconst plainText = "This is a secret message";
// create cipher objectconst cipher = crypto.createCipheriv("aes-256-cbc", secretKey, iv);
// encrypt the datalet encryptedText = cipher.update(plainText, "utf-8", "hex");
// finalize the encryptionencryptedText += cipher.final("hex");
console.log(encryptedText); 上の例は、crypto モジュールを使用し、CBC モードで aes-256 を使用してプレーン テキストを暗号化する方法を示しています。 crypto.randomBytes メソッドを使用して秘密キーと初期化ベクトルを生成します。次に、crypto.createCipheriv メソッドを使用して暗号オブジェクトを作成し、cipher.update メソッドと cipher.final メソッドを使用してプレーン テキスト メッセージを暗号化します。
結果は暗号化されたメッセージの 16 進文字列であり、同じ秘密キーと IV を使用して復号化できます。
crypto モジュールを使用して Node.js でデータを復号化する方法
暗号化されたデータは、暗号化モジュールのcrypto.createDecipheriv() メソッドを使用して復号化できます。このメソッドは、復号化アルゴリズム、秘密キー、および初期化ベクトルを入力として受け取ります。このメソッドは Decipher オブジェクトを返します。このオブジェクトを使用して、Decipher.update() メソッドと Decipher.final() メソッドを使用してデータを復号化できます。 。
例えば:
// create Decipher objectconst decipher = crypto.createDecipheriv("aes-256-cbc", secretKey, iv);
// decrypt the datalet decryptedText = decipher.update(encryptedText, "hex", "utf-8");
// finalize the decryptiondecryptedText += decipher.final("utf-8");
console.log(decryptedText); // This is a secret message 上の例は、暗号化されたデータを暗号化したときと同じアルゴリズム、秘密鍵、および初期化ベクトルを使用して復号化する方法を示しています。
crypto.createDecipheriv メソッドを使用して Decipher オブジェクトを作成します。次に、データ、入力エンコーディング、出力エンコーディングを引数として受け取る decopher.update メソッドを使用してデータを復号します。最後に、 を使用して復号化プロセスを終了します。 > decopher.final強力な方法です。このメソッドを呼び出すと、Decipher オブジェクトを使用してデータを復号化できるようになります。結果はプレーンテキスト文字列です。
暗号化と復号化は、機密データを保護し、機密性を維持するために重要です。電子商取引、オンライン バンキング、データ ストレージなどのさまざまな現実世界のアプリケーションがあります。
Node.js 暗号化モジュールのその他のアプリケーション
ハッシュ、暗号的に安全なランダム データの生成、暗号化と復号化のほかに、Node.js 暗号モジュールを使用してデジタル署名の署名と検証を行うこともできます。これは、デジタル ドキュメントの信頼性と完全性を検証するのに役立ちます。さらに、暗号モジュールを使用してデータ送信用のストリームを保護し、送信中のデータの改ざんや盗聴を防ぐことができます。
