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

【初心者向け】Node.jsのcrypto.getCiphers()メソッドの使い方と実行例を解説

crypto.getCiphers()メソッドは、Node.jsがサポートしているすべての暗号アルゴリズム(cipher algorithm)の名称を配列として返します。cryptoモジュールには膨大な数の暗号アルゴリズムが組み込まれており、開発者は用途に応じて自由に選択できます。中でも最も広く使われているのは「AES(Advanced Encryption Standard:高度暗号化標準)」です。

この記事では、getCiphers()メソッドの基本構文から、実際にコードを実行して暗号アルゴリズムの一覧を取得する方法まで、サンプルコード付きでわかりやすく解説します。

構文

crypto.getCiphers()

パラメータ

このメソッドは、利用可能な暗号アルゴリズムの一覧を返すためだけのものなので、引数を受け取らず、指定する必要もありません。

戻り値

サポートされているすべての暗号アルゴリズム名が格納された文字列の配列を返します。

使用例

まず「getCipher.js」という名前のファイルを作成し、以下のコードをコピー&ペーストしてください。ファイル作成後、次のコマンドでプログラムを実行できます。

node getCipher.js

getCipher.js

// すべての暗号アルゴリズムを取得するNode.jsデモプログラム

// cryptoモジュールを読み込む
const crypto = require('crypto');

// getCiphers()メソッドを呼び出す
const cipher = crypto.getCiphers();

// 利用可能なすべてのアルゴリズム一覧を出力する
console.log("The list of all cipher algorithm are as follows: ", cipher);

出力結果

スクリプトを実行すると、コンソールには以下のようにサポートされている暗号アルゴリズムの一覧が出力されます(環境やNode.jsのバージョンによって内容が異なる場合があります)。

C:\home\node>> node getCipher.js
The list of all cipher algorithm are as follows: [ 'aes-128-cbc', 'aes-128-cbc-hmac-sha1', 'aes-128-cbc-hmac-sha256', 'aes-128-ccm', 'aes-128-cfb', 'aes-128-cfb1', 'aes-128-cfb8', 'aes-128-ctr', 'aes-128-ecb', 'aes-128-gcm', 'aes-128-ocb', 'aes-128-ofb', 'aes-128-xts', 'aes-192-cbc', 'aes-192-ccm', 'aes-192-cfb', 'aes-192-cfb1', 'aes-192-cfb8', 'aes-192-ctr', 'aes-192-ecb', 'aes-192-gcm', 'aes-192-ocb', 'aes-192-ofb', 'aes-256-cbc', 'aes-256-cbc-hmac-sha1', 'aes-256-cbc-hmac-sha256', 'aes-256-ccm', 'aes-256-cfb', 'aes-256-cfb1', 'aes-256-cfb8', 'aes-256-ctr', 'aes-256-ecb', 'aes-256-gcm', 'aes-256-ocb', 'aes-256-ofb', 'aes-256-xts', 'aes128', 'aes128-wrap', 'aes192', 'aes192-wrap', 'aes256', 'aes256-wrap', 'aria-128-cbc', 'aria-128-ccm', 'aria-128-cfb', 'aria-128-cfb1', 'aria-128-cfb8', 'aria-128-ctr', 'aria-128-ecb', 'aria-128-gcm', 'aria-128-ofb', 'aria-192-cbc', 'aria-192-ccm', 'aria-192-cfb', 'aria-192-cfb1', 'aria-192-cfb8', 'aria-192-ctr', 'aria-192-ecb', 'aria-192-gcm', 'aria-192-ofb', 'aria-256-cbc', 'aria-256-ccm', 'aria-256-cfb', 'aria-256-cfb1', 'aria-256-cfb8', 'aria-256-ctr', 'aria-256-ecb', 'aria-256-gcm', 'aria-256-ofb', 'aria128', 'aria192', 'aria256', 'bf', 'bf-cbc', 'bf-cfb', 'bf-ecb', 'bf-ofb', 'blowfish', 'camellia-128-cbc', 'camellia-128-cfb', 'camellia-128-cfb1', 'camellia-128-cfb8', 'camellia-128-ctr', 'camellia-128-ecb', 'camellia-128-ofb', 'camellia-192-cbc', 'camellia-192-cfb', 'camellia-192-cfb1', 'camellia-192-cfb8', 'camellia-192-ctr', 'camellia-192-ecb', 'camellia-192-ofb', 'camellia-256-cbc', 'camellia-256-cfb', 'camellia-256-cfb1', 'camellia-256-cfb8', 'camellia-256-ctr', 'camellia-256-ecb', 'camellia-256-ofb', 'camellia128', ... 70 more items ]

ポイント

  • AES系(aes-128 / aes-192 / aes-256)など、鍵長ごとに複数のバリエーションが存在します。
  • CBC、GCM、CTRなど、動作モードの違いによってもアルゴリズム名が分かれています。

補足:取得したアルゴリズムの活用方法

ここで取得したアルゴリズム名は、crypto.createCipheriv()の第1引数にそのまま指定できます。たとえば、認証付き暗号として推奨される「aes-256-gcm」を使ってデータを暗号化・復号化する際に、この一覧は対応状況の確認に役立ちます。

const crypto = require('crypto');
const algorithm = 'aes-256-gcm&#;;

// アルゴリズムがサポートされているか確認
if (crypto.getCiphers().includes(algorithm)) {
  console.log(`${algorithm} は利用可能です`);
}

このように、getCiphers()は実行環境でどの暗号方式が使えるかを事前にチェックしたい場合に便利なメソッドです。

  1. Node.jsのcrypto.privateDecrypt()メソッドの使い方を徹底解説

    crypto.privateDecrypt()メソッドは、crypto.publicEncrypt()メソッドを使って対応する公開鍵で事前に暗号化されたデータを、パラメータとして渡された秘密鍵を用いて復号するために使用されます。RSA暗号方式などの公開鍵暗号システムにおいて、安全なデータ復号を実現するための重要なAPIです。 構文 crypto.privateDecrypt(privateKey, buffer) パラメータ このメソッドが受け取る各パラメータの詳細は以下のとおりです。 privateKey(秘密鍵) – 復号に使用する秘密鍵を指定します。Object、String、Bu

  2. Node.jsのcrypto.getHashes()メソッドとは?使い方とサポートされるハッシュアルゴリズム一覧の取得方法

    crypto.getHashes()メソッドは、Node.jsでサポートされているすべてのハッシュアルゴリズムの名前を配列形式で返します。cryptoモジュールには非常に多くのハッシュアルゴリズムが用意されており、その中でも歴史的によく使われてきたのが「MD5(Message-Digest Algorithm 5)」です。ただし、MD5には衝突耐性の脆弱性があるため、現在ではセキュリティ用途にはSHA-256やSHA3系など、より強力なアルゴリズムを使うことが推奨されています。 構文 crypto.getHashes() 引数(パラメータ) このメソッドは、サポートされているハッシュアルゴ