オブジェクト組み込みオブジェクト

オブジェクト暗号

対称暗号化アルゴリズム オブジェクト

暗号オブジェクトが属するcryptoモジュール、作成します:

1
var c = new crypto.Cipher(crypto.AES, crypto.ECB, ...);

以下では、AES を例として、暗号化と復号化に Cipher オブジェクトを使用する方法を示します。

まず、AES 暗号化アルゴリズムなどの対称的に暗号化された Cipher オブジェクトを取得する必要があります。

1 2 3
const crypto = require('crypto'); const key = crypto.randomBytes(16); // generate a 16-byte random key const cipher = new crypto.Cipher(crypto.AES, crypto.ECB, key);

上記のコードでは、randomBytesメソッドを通じて 16 バイトの乱数を AES キーとして生成しました。次に、ECB ブロック暗号作業モードを使用し、生成された乱数をキーとして使用して、AES アルゴリズムの Cipher オブジェクトを作成しました。

次に、encryptCipher オブジェクトのメソッドを使用して平文を暗号化します。

1 2 3
const plaintext = 'Hello, world!'; const encrypted = cipher.encrypt(plaintext); console.log(encrypted); // output encrypted data

上記のコードでは、文字列を暗号化して暗号化結果を出力するencryptメソッドを使用しています。Hello, world!

上記のコードに関しては、次の点に注意する必要があります。

  • 暗号化を実行する前に、対称的に暗号化された Cipher オブジェクトを作成し、暗号化アルゴリズム、パスワード、ブロック暗号動作モードなどのパラメーターを設定する必要があります。
  • 暗号化メソッドを呼び出した後、暗号化されたデータを取得できます。Buffer物体。出力はバイナリデータであるため、Hex変換には etc を使用するなど、対応する方法で印刷する必要があることに注意してください。

データを復号化したい場合は、Cipher オブジェクトも必要です。これも AES アルゴリズムに基づいており、同じキーとブロック暗号動作モードを使用します。

1 2 3
const decipher = new crypto.Cipher(crypto.AES, crypto.ECB, key); const decrypted = decipher.decrypt(encrypted); console.log(decrypted.toString()); // output decrypted data

ここでは、新しい Cipher オブジェクトを作成し、同じキーとパスワードの動作モードを使用し、decrypt暗号化されたデータを復号化するメソッドを使用します。復号化の結果は、Buffer正しく出力するには、オブジェクトを文字列に変換する必要があります。

相続関係

コンストラクタ

Cipher

暗号コンストラクター。ARC4 の初期化にのみ使用されます。

1 2
new Cipher(Integer provider, Buffer key);

呼び出しパラメータ:

  • provider: 整数、暗号化アルゴリズムを指定します
  • key:Buffer、暗号化および復号化のパスワードを指定します。

暗号コンストラクター

1 2 3
new Cipher(Integer provider, Integer mode, Buffer key);

呼び出しパラメータ:

  • provider: 整数、暗号化アルゴリズムを指定します
  • mode: 整数、ブロック暗号の動作モードを指定します
  • key:Buffer、暗号化および復号化のパスワードを指定します。

暗号コンストラクター

1 2 3 4
new Cipher(Integer provider, Integer mode, Buffer key, Buffer iv);

呼び出しパラメータ:

  • provider: 整数、暗号化アルゴリズムを指定します
  • mode: 整数、ブロック暗号の動作モードを指定します
  • key:Buffer、暗号化および復号化のパスワードを指定します。
  • iv:Buffer、初期ベクトルを指定します

メンバーのプロパティ

name

文字列、現在のアルゴリズム名を返します

1
readonly String Cipher.name;

keySize

整数。現在のアルゴリズムのパスワードの長さをビット単位で返します。

1
readonly Integer Cipher.keySize;

ivSize

整数。現在のアルゴリズムの初期ベクトル長をバイト単位で返します。

1
readonly Integer Cipher.ivSize;

blockSize

整数。現在のアルゴリズムのデータ ブロック長をバイト単位で返します。

1
readonly Integer Cipher.blockSize;

メンバー関数

paddingMode

塗りつぶしモードを使用する

1
Cipher.paddingMode(Integer mode);

呼び出しパラメータ:

  • mode: 整数。パディング モードを指定します。デフォルトは PADDING_PKCS7 です。

encrypt

現在のアルゴリズム暗号を使用してデータを暗号化する

1
Buffer Cipher.encrypt(Buffer data) async;

呼び出しパラメータ:

  • data:Buffer、暗号化するデータを指定します

返される結果:

  • Buffer、暗号化されたデータを返します

decrypt

現在のアルゴリズム暗号を使用してデータを復号化する

1
Buffer Cipher.decrypt(Buffer data) async;

呼び出しパラメータ:

  • data:Buffer、復号化するデータを指定します

返される結果:

  • Buffer、復号化されたデータを返します

toString

オブジェクトの文字列表現を返します。通常、「[Native Object]」が返されます。オブジェクトは、独自の特性に従って再実装できます。

1
String Cipher.toString();

返される結果:

  • String、オブジェクトの文字列表現を返します。

toJSON

オブジェクトの JSON 形式表現を返します。通常は、オブジェクトによって定義された読み取り可能なプロパティのコレクションを返します。

1
Value Cipher.toJSON(String key = "");

呼び出しパラメータ:

  • key: 文字列、使用されません

返される結果:

  • Value、シリアル化可能な JSON を含む値を返します