オブジェクト暗号
対称暗号化アルゴリズム オブジェクト
暗号オブジェクトが属するcryptoモジュール、作成します:
1var c = new crypto.Cipher(crypto.AES, crypto.ECB, ...);
以下では、AES を例として、暗号化と復号化に Cipher オブジェクトを使用する方法を示します。
まず、AES 暗号化アルゴリズムなどの対称的に暗号化された Cipher オブジェクトを取得する必要があります。
1
2
3const 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 オブジェクトを作成しました。
次に、encrypt
Cipher オブジェクトのメソッドを使用して平文を暗号化します。
1
2
3const 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
3const 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
2new Cipher(Integer provider,
Buffer key);
呼び出しパラメータ:
- provider: 整数、暗号化アルゴリズムを指定します
- key:Buffer、暗号化および復号化のパスワードを指定します。
暗号コンストラクター
1
2
3new Cipher(Integer provider,
Integer mode,
Buffer key);
呼び出しパラメータ:
- provider: 整数、暗号化アルゴリズムを指定します
- mode: 整数、ブロック暗号の動作モードを指定します
- key:Buffer、暗号化および復号化のパスワードを指定します。
暗号コンストラクター
1
2
3
4new Cipher(Integer provider,
Integer mode,
Buffer key,
Buffer iv);
呼び出しパラメータ:
- provider: 整数、暗号化アルゴリズムを指定します
- mode: 整数、ブロック暗号の動作モードを指定します
- key:Buffer、暗号化および復号化のパスワードを指定します。
- iv:Buffer、初期ベクトルを指定します
メンバーのプロパティ
name
文字列、現在のアルゴリズム名を返します
1readonly String Cipher.name;
keySize
整数。現在のアルゴリズムのパスワードの長さをビット単位で返します。
1readonly Integer Cipher.keySize;
ivSize
整数。現在のアルゴリズムの初期ベクトル長をバイト単位で返します。
1readonly Integer Cipher.ivSize;
blockSize
整数。現在のアルゴリズムのデータ ブロック長をバイト単位で返します。
1readonly Integer Cipher.blockSize;
メンバー関数
paddingMode
塗りつぶしモードを使用する
1Cipher.paddingMode(Integer mode);
呼び出しパラメータ:
- mode: 整数。パディング モードを指定します。デフォルトは PADDING_PKCS7 です。
encrypt
現在のアルゴリズム暗号を使用してデータを暗号化する
1Buffer Cipher.encrypt(Buffer data) async;
呼び出しパラメータ:
- data:Buffer、暗号化するデータを指定します
返される結果:
- Buffer、暗号化されたデータを返します
decrypt
現在のアルゴリズム暗号を使用してデータを復号化する
1Buffer Cipher.decrypt(Buffer data) async;
呼び出しパラメータ:
- data:Buffer、復号化するデータを指定します
返される結果:
- Buffer、復号化されたデータを返します
toString
オブジェクトの文字列表現を返します。通常、「[Native Object]」が返されます。オブジェクトは、独自の特性に従って再実装できます。
1String Cipher.toString();
返される結果:
- String、オブジェクトの文字列表現を返します。
toJSON
オブジェクトの JSON 形式表現を返します。通常は、オブジェクトによって定義された読み取り可能なプロパティのコレクションを返します。
1Value Cipher.toJSON(String key = "");
呼び出しパラメータ:
- key: 文字列、使用されません
返される結果:
- Value、シリアル化可能な JSON を含む値を返します