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

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

crypto.createSign()メソッドとは

Node.jsのcrypto.createSign()メソッドは、引数に渡されたアルゴリズムを使用して署名(Sign)用のオブジェクトを生成し、そのインスタンスを返します。利用可能なダイジェストアルゴリズムの一覧は、crypto.getHashes()メソッドで確認できます。また、一部のケースでは、ダイジェストアルゴリズム名の代わりに「RSA-SHA256」のような署名アルゴリズム名を直接指定してSignインスタンスを作成することも可能です。

生成されたSignオブジェクトは書き込み可能なストリームとして動作するため、署名対象となるデータをwrite()メソッドで書き込み、最後に秘密鍵を使って署名を計算するという流れになります。

構文

crypto.createSign(algorithm, [options])

パラメータ

このメソッドが受け取るパラメータは以下の通りです。

  • algorithm – Signオブジェクトを生成する際に使用するアルゴリズム名を指定します。

  • options – 省略可能なパラメータです。ストリームの動作を制御したい場合に使用します。

使用例1:Signオブジェクトの生成

まず「createSign.js」という名前のファイルを作成し、以下のコードをコピーしてください。ファイル作成後、次のコマンドで実行できます。

node createSign.js

createSign.js

// Node.js program to demonstrate the use of createSign() method

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

// SHA256アルゴリズムを指定してSignオブジェクトを生成
const sign = crypto.createSign('SHA256');

// Signオブジェクトの中身を出力
console.log(sign);

出力結果

C:\home\node>> node createSign.js
Sign {
    _handle: {},
    _writableState:
    WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: false,
        ended: false,
        finished: false,
        destroyed: false,
        decodeStrings: true,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: true,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: null,
        writelen: 0,
        bufferedRequest: null,
        lastBufferedRequest: null,
        pendingcb: 0,
        prefinished: false,
        errorEmitted: false,
        emitClose: true,
        autoDestroy: false,
        bufferedRequestCount: 0,
        corkedRequestsFree:
        {   next: null,
            entry: null,
            finish: [Function: bound onCorkedFinish] } },
    writable: true,
    _events: [Object: null prototype] {},
    _eventsCount: 0,
    _maxListeners: undefined }

出力結果から、生成されたSignオブジェクトが内部に_writableStateなどのストリーム関連プロパティを持っていることが分かります。writable: trueとなっていることからも、このオブジェクトが書き込み可能なストリームであることが確認できます。

使用例2:write()メソッドでデータを書き込む

続いて、もう一つの例を見てみましょう。Signオブジェクトに対してwrite()メソッドでデータを書き込むサンプルです。

// Node.js program to demonstrate the use of createSign() method

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

// SHA256アルゴリズムを指定してSignオブジェクトを生成
const sign = crypto.createSign('SHA256');

// データを書き込み、結果を出力
console.log(sign.write('Welcome to Tutorials Point'));

出力結果

C:\home\node>> node createSign.js
true

write()メソッドが正常にデータを受け付けるとtrueが返されます。このようにSignオブジェクトはストリームとしてデータを受け取り、後続のsign()メソッドに秘密鍵を渡すことで電子署名を生成できます。デジタル署名によるデータの改ざん検知や認証処理など、セキュアなアプリケーション開発において重要なメソッドです。

  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() 引数(パラメータ) このメソッドは、サポートされているハッシュアルゴ