Node.jsのcrypto.publicEncrypt()メソッド
crypto.publicEncrypt()は、パラメーターで渡された公開鍵を使用して、バッファーパラメーター内の指定されたデータを暗号化するために使用されます。返されたデータは、対応する秘密鍵を使用して復号化できます。
構文
crypto.publicEncrypt(key, buffer)
パラメータ
上記のパラメータは以下のように記述されます-
-
キー –オブジェクト、文字列、バッファ、またはKeyObjectの5種類のデータを含めることができます。
-
キー –このフィールドには、PEMでエンコードされた公開鍵または秘密鍵が含まれます。 string、buffer、keyObjectのいずれかのタイプにすることができます。
-
oaepHash –このフィールドには、OAEPパディングとMGF1に使用されるハッシュ関数が含まれています。デフォルト値は「sha1」です。
-
oaepLabel –このフィールドには、OAEPパディングの値が含まれます。指定されていない場合、ラベルは使用されません。
-
パスフレーズ -これは秘密鍵のオプションのパスフレーズです。
-
パディング –これはcrypto.constantsで定義されたオプションの値です。
-
エンコーディング –これは、バッファ、キー、oaepLabel、またはパスフレーズの値が文字列である場合に使用する必要があるエンコーディングのタイプです。
-
-
バッファ –このフィールドには、暗号化するデータコンテンツが含まれます。可能なバッファタイプは、string、TypedArray、Buffer、ArrayBuffer、DataViewです。
例
publicEncrypt.jsという名前のファイルを作成し、以下のコードスニペットをコピーします。ファイルを作成したら、次のコマンドを使用して、以下の例に示すようにこのコードを実行します-
node publicEncrypt.js
publicEncrypt.js
// Node.js program to demonstrate the flow of crypto.publicEncrypt() method // Importing crypto and fs module const crypto = require('crypto'); const fs = require("fs"); // Creating below function for generating keys function generateKeyFiles() { const keyPair = crypto.generateKeyPairSync('rsa', { modulusLength: 520, publicKeyEncoding: { type: 'spki', format: 'pem' }, privateKeyEncoding: { type: 'pkcs8', format: 'pem', cipher: 'aes-256-cbc', passphrase: '' } }); // Creating the public key file with the below name fs.writeFileSync("public_key", keyPair.publicKey); } // Generating keys generateKeyFiles(); // Encrypting string using the below function function encryptString (plaintext, publicKeyFile) { const publicKey = fs.readFileSync(publicKeyFile, "utf8"); //Calling publicEncrypt() with below parameters const encrypted = crypto.publicEncrypt( publicKey, Buffer.from(plaintext)); return encrypted.toString("base64"); } // Text that will be encrypted const plainText = "TutorialsPoint"; // Defining the encrypted text const encrypted = encryptString(plainText, "./public_key"); // Printing plain text console.log("Plaintext:", plainText); // Printing the encrypted text console.log("Encrypted: ", encrypted);を印刷します
出力
C:\home\node>> node publicEncrypt.js Plaintext: TutorialsPoint Encrypted: kgnqPxy/n34z+/5wd7MZiMAL5LrQisTLfZiWoSChXSvxgtifMQaZ56cbF+twA55olM0rFfnuV6qqtc a8SXIHQrk=
例
もう1つの例を見てみましょう。
// Node.js program to demonstrate the flow of crypto.publicEncrypt() method // Importing crypto and fs module const crypto = require('crypto'); const fs = require("fs"); // Creating below function for generating keys function generateKeyFiles() { const keyPair = crypto.generateKeyPairSync('rsa', { modulusLength: 520, publicKeyEncoding: { type: 'spki', format: 'pem' }, privateKeyEncoding: { type: 'pkcs8', format: 'pem', cipher: 'aes-256-cbc', passphrase: '' } }); // Creating the public key file fs.writeFileSync("public_key", keyPair.publicKey); } // Generating keys generateKeyFiles(); // Encrypting string using the below function function encryptString (plaintext, publicKeyFile) { const publicKey = fs.readFileSync(publicKeyFile, "utf8"); //Calling publicEncrypt() with below parameters const encrypted = crypto.publicEncrypt( publicKey, Buffer.from(plaintext)); return encrypted; } // Text that will be encrypted const plainText = "Hello TutorialsPoint!"; // Defining the encrypted text const encrypted = encryptString(plainText, "./public_key"); // Printing plain text console.log("Plaintext:", plainText); // Printing the encrypted buffer console.log("Buffer: ", encrypted);を出力します
出力
C:\home\node>> node publicEncrypt.js Plaintext: Hello TutorialsPoint! Buffer: <Buffer 33 0b 54 96 0e 8f 34 6c b4 d5 7a cf d4 d5 ef 7b 7e c5 ec 97 cf 75 05 07 df 5a 9e d4 3d cc 3e bb 55 e7 50 1b 64 f0 c8 89 19 61 81 99 e5 88 10 4a 3b 5a ... >
-
Node.jsのcrypto.privateDecrypt()メソッド
crypto.privateDecrypt()は、crypto.publicEncrypt()メソッドで対応する公開鍵を使用して以前に暗号化されたパラメーターで渡された秘密鍵を使用して、指定されたデータコンテンツを復号化するために使用されます。 構文 crypto.privateDecrypt(privateKey、buffer) パラメータ 上記のパラメータは以下のように記述されます- キー –オブジェクト、文字列、バッファ、またはKeyObjectの5種類のデータを含めることができます。 oaepHash –このフィールドには、OAEPパディングとMGF1に使用されるハ
-
Node.jsのcrypto.getHashes()メソッド
crypto.getHashes()メソッドは、サポートされているすべてのハッシュアルゴリズムの名前を含む配列を返します。暗号パッケージには、使用できるハッシュアルゴリズムの膨大なリストがあります。ただし、最も使用されている暗号化アルゴリズムは「MD5 –メッセージダイジェストアルゴリズム5」です。 構文 crypto.getHashes() パラメータ すべてのハッシュアルゴリズムのリストを返すためです。入力する必要はありません。 例 getHashes.jsという名前のファイルを作成し、以下のコードスニペットをコピーします。ファイルを作成したら、次のコマンドを使用して、以下の例に示すよ