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

Node.jsのcrypto.scrypt()メソッド


crypto.scrypt()メソッドは、scryptメソッドの非同期実装を提供します。 scryptは、ブルートフォース攻撃からシステムを保護し、システムを不利にするパスワードベースの鍵導出関数として定義できます。ただし、スクリプト関数は、メモリ的にも計算的にもコストがかかります。

構文

crypto.scrypt(password, salt, keylen, [options], [callback])

パラメータ

上記のパラメータは以下のように記述されます-

  • パスワード –エントリのデコードに必要なscryptのパスワードフィールド。文字列、オブジェクト、TypedArrayなどにすることができます。

  • –この値は、可能な限り一意である必要があります。これは主にデータの暗号化に使用されます。ソルトの推奨される最小の長さは16バイトです。

  • キーレン –このパラメーターはキーの長さを定義し、数値である必要があります。

  • オプション

    • コスト –これは、使用される各メモリのCPUのコストです。この値は、1より大きい2の累乗である必要があります。デフォルト値は16384です。

    • blockSize –このパラメーターは、各ブロックサイズの値を定義しました。デフォルト値は8です。

    • 並列化 –このパラメーターは、並列化パラメーターを定義しました。デフォルト値は1です。

    • N –このパラメーターはコストの別名であり、代わりに使用できます。一度に定義できるのは1つだけです。

    • r –このパラメーターはblockSizeのエイリアスであり、同様に一度に1つしか定義できません。

    • p –並列化のエイリアス。定義できるのは1つだけです。

    • maxmem –これはメモリの上限値です。 128 * N * r> maxmemの場合、エラーがスローされます。デフォルト値は32*1024*1024です。

  • コールバック –この関数は、エラーがスローされたときに、処理したい場合に呼び出されます。

scrypt.jsという名前のファイルを作成し、以下のコードスニペットをコピーします。ファイルを作成したら、次のコマンドを使用して、以下の例に示すようにこのコードを実行します-

node scrypt.js

scrypt.js

// Node.js program to demonstrate the flow of crypto.scrypt() method

// Importing the crypto module
var crypto = require('crypto');

// Calling the scrypt() method with the below parameters
crypto.scrypt('tutorialspoint', 'asdfghjkl', 32, (err, derivedKey) => {

if (err) throw err;

// Prints the derived key as a buffer value
console.log("The derived key(1) is:", derivedKey);
});

// Calling the scrypt() method with the cost option
crypto.scrypt('GeeksforGeeks', 'tfytdx', 128,
   { N: 512 }, (err, derivedKey) => {

if (err) throw err;

// Prints the derived key as a buffer value
console.log("The derived key(2) is:", derivedKey);
console.log();
});

出力

C:\home\node>> node scrypt.js
The derived key(2) is: <Buffer b3 f8 72 5f 58 df 98 d9 c0 8a ba 0c 2c 50 85 b1
76 de 39 35 40 27 7d 57 f1 6a a1 07 54 dc c9 63 65 32 f2 db 29 95 dc ee 0b 9f
e3 d5 0a 9e 3a d0 f6 b4 ... >

The derived key(1) is: <Buffer ae 50 38 61 17 f7 11 51 e4 50 63 3c 2a 9c ec f0
46 42 a6 ca 04 78 67 05 c8 8c 0c 69 00 c3 03 7f>

もう1つの例を見てみましょう。

// Node.js program to demonstrate the flow of crypto.scrypt() method

// Importing the crypto module
var crypto = require('crypto');

// Initializing the value of salt as a typedArray
const salt = new Uint32Array(7);

// Using the scrypt() method with below parameters
crypto.scrypt('WelcomeTutorialspoint', salt, 16, (err, derivedKey) => {
   if (err) throw err;
   // Printing the derived key in encoded string format
   console.log("The derived key(1) is:",
      derivedKey.toString("ascii"));
});

// Initialising the value of salt as a DataView
const newSalt = new DataView(new ArrayBuffer(5));

// Using the script() method with cost parameter
crypto.scrypt('HelloTutorialspoint', newSalt, 16, { N: 32 }, (err, derivedKey) => {
   if (err) throw err;
   // Printing the derived key in encoded string format
   console.log("The derived key(2) is:",
      derivedKey.toString("base64"));
});

出力

C:\home\node>> node scrypt.js
The derived key(2) is: PBYDRlgayLVGjC8z3YUcSQ==
The derived key(1) is: <Uu0allCb,d?,Z5_

  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という名前のファイルを作成し、以下のコードスニペットをコピーします。ファイルを作成したら、次のコマンドを使用して、以下の例に示すよ