Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

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 ... >

  1. Node.jsのcrypto.privateDecrypt()メソッド

    crypto.privateDecrypt()は、crypto.publicEncrypt()メソッドで対応する公開鍵を使用して以前に暗号化されたパラメーターで渡された秘密鍵を使用して、指定されたデータコンテンツを復号化するために使用されます。 構文 crypto.privateDecrypt(privateKey、buffer) パラメータ 上記のパラメータは以下のように記述されます- キー –オブジェクト、文字列、バッファ、またはKeyObjectの5種類のデータを含めることができます。 oaepHash –このフィールドには、OAEPパディングとMGF1に使用されるハ

  2. Node.jsのcrypto.getHashes()メソッド

    crypto.getHashes()メソッドは、サポートされているすべてのハッシュアルゴリズムの名前を含む配列を返します。暗号パッケージには、使用できるハッシュアルゴリズムの膨大なリストがあります。ただし、最も使用されている暗号化アルゴリズムは「MD5 –メッセージダイジェストアルゴリズム5」です。 構文 crypto.getHashes() パラメータ すべてのハッシュアルゴリズムのリストを返すためです。入力する必要はありません。 例 getHashes.jsという名前のファイルを作成し、以下のコードスニペットをコピーします。ファイルを作成したら、次のコマンドを使用して、以下の例に示すよ