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

Node.jsのcipher.final()メソッド


cipher.final()は、暗号オブジェクトの値を含むバッファーまたは文字列を返すために使用されます。これは、暗号モジュール内のクラスCipherによって提供される組み込みメソッドの1つです。出力エンコーディングが指定されている場合、文字列が返されます。出力エンコーディングが指定されていない場合、バッファが返されます。 cipher.finalメソッドを複数回呼び出すと、エラーがスローされます。

構文

cipher.final([outputEncoding])

パラメータ

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

  • outputEncoding –出力エンコーディングをパラメーターとして受け取ります。このパラメータの入力タイプは文字列です。可能な入力値は、hex、base64などです。

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

node cipherFinal.js

cipherFinal.js

// Example to demonstrate the use of cipher.final() method

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

// Initialising the AES algorithm
const algorithm = 'aes-192-cbc';
// Initialising the password used for generating key
const password = '12345678';

// Retrieving key for the cipher object
const key = crypto.scryptSync(password, 'salt', 24);

// Initializing the static iv
const iv = Buffer.alloc(16, 0);

// Initializing the cipher object to get cipher
const cipher = crypto.createCipheriv(algorithm, key, iv);
const cipher2 = crypto.createCipheriv(algorithm, key, iv);

//Getting the string value as outputEncoding is defined
let hexValue = cipher.final('hex');
let base64Value = cipher2.final('base64');

// Printing the result...
console.log("Hex String:- " + hexValue);
console.log("Base64 String:- " + base64Value)

出力

C:\home\node>> node cipherFinal.js
Hex String:- 8d11772fce59f08e7558db5bf17b3112
Base64 String:- jRF3L85Z8I51WNtb8XsxEg==

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

// Example to demonstrate the use of cipher.final() method

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

// Initialising the AES algorithm
const algorithm = 'aes-192-cbc';
// Initialising the password used for generating key
const password = '12345678';

// Retrieving key for the cipher object
const key = crypto.scryptSync(password, 'salt', 24);

crypto.scrypt(password, 'salt', 24,
   { N: 512 }, (err, key) => {

      if (err) throw err;

   // Initializing the static iv
   const iv = Buffer.alloc(16, 0);

   // Initializing the cipher object to get cipher
   const cipher = crypto.createCipheriv(algorithm, key, iv);

   //Getting the buffer value since output encoding is null
   let hexValue = cipher.final();
   let base64Value = cipher.final('base64');

   // Printing the result...
   console.log("Buffer:- " + hexValue);
   console.log("Base64 String:- " + base64Value)
});

出力

C:\home\node>> node cipherFinal.js
internal/crypto/cipher.js:164
   const ret = this._handle.final();
                           ^
Error: Unsupported state
   at Cipheriv.final (internal/crypto/cipher.js:164:28)
   at Object. (/home/node/test/cipher.js:22:26)
   at Module._compile (internal/modules/cjs/loader.js:778:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
   at Module.load (internal/modules/cjs/loader.js:653:32)
   at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
   at Function.Module._load (internal/modules/cjs/loader.js:585:3)
   at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
   at startup (internal/bootstrap/node.js:283:19)
   at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)

上記の例では、そのキーの暗号をすでに取得しているため、エラーが発生しています。これは最後の方法であるため、同じキーの暗号を再度検索しようとするとエラーが発生します。


  1. Node.jsのprocess.argv0()メソッド

    process.argv0()メソッドは、node.jsアプリケーションの起動時に渡されるargv[0]の元の値の読み取り専用コピーを保存するために使用されます。 構文 process.argv0() パラメータ argv[0]のプリペイドカードの読み取り専用コピーのみを返すため。ユーザーからの入力は必要ありません。 例 argv0.jsという名前のファイルを作成し、以下のコードスニペットをコピーします。ファイルを作成したら、次のコマンドを使用して、以下の例に示すようにこのコードを実行します- node argv0.js argv0.js // Node.js program to

  2. Node.jsのprocess.argv()メソッド

    process.argv()メソッドは、Node.jsプロセスの起動時に渡されたすべてのコマンドライン引数を返すために使用されます。最初の要素には、常にprocess.execPathと同じ値が含まれます。 構文 process.argv() パラメータ node.jsプロセスの前に渡されたすべてのコマンドライン引数を返すため。ユーザーからの入力は必要ありません。 例 argv.jsという名前のファイルを作成し、以下のコードスニペットをコピーします。ファイルを作成したら、次のコマンドを使用して、以下の例に示すようにこのコードを実行します- node argv.js argv.js