モジュール基本モジュール

モジュール暗号化

cryptoこのモジュールは、fibjs組み込みの暗号化アルゴリズム モジュールです。対称暗号化、非対称暗号化、ダイジェスト アルゴリズム、暗号乱数発生器などの機能を提供します。使用する前に、require('crypto')モジュールを 経由でロードする必要があります。

cryptoモジュールには、次のような多くのオブジェクトが利用可能です。

  • PKey: 非対称暗号化アルゴリズム オブジェクト
  • X509Cert: X.509 証明書の操作に使用されるオブジェクト
  • Cipher: 対称暗号化の実装に使用されるオブジェクト
  • Digest: ダイジェストアルゴリズムの実装に使用されるオブジェクト

暗号化アルゴリズムを使用する前に、キー オブジェクトを作成する必要があります。たとえば、次のAES例ではキー オブジェクトを作成します。

1 2
const crypto = require('crypto'); const key = crypto.randomBytes(16); // generate a 16-byte random key

次に、Cipherオブジェクトを使用して平文を暗号化します。

1 2 3 4
const c = new crypto.Cipher(crypto.AES, crypto.ECB, key); const data = 'hello, world'; const encrypted = c.encrypt(data).hex(); console.log(encrypted); // output encrypted data

AES上記の例では、暗号化Cipherオブジェクトが作成され、encryptメソッドを使用して平文が暗号化され、暗号化結果が返されます。

対称暗号化アルゴリズムに加えて、cryptoモジュールは非対称暗号化アルゴリズムとダイジェスト アルゴリズムもサポートできます。たとえば、次の例はPKeyDigestオブジェクトを使用して SHA256 暗号化を実装するコードです。

1 2 3 4 5 6
const privateKey = crypto.loadPKey('private.pem'); // read private key from file const data = 'hello, world'; const digest = new crypto.Digest(hash.SHA256); digest.update(data); const signature = privateKey.sign(digest.digest()); console.log(signature); // output signature

上記の例では、最初に秘密キー ファイルが読み取られ、入力データが準備されます。次に、SHA256Digestオブジェクトが作成され、updateメソッドを使用してデータがハッシュ計算に追加されます。計算が完了したら、privateKey.signメソッドを使用して署名し、署名結果を出力します。

要約すると、cryptoこのモジュールはさまざまな暗号化アルゴリズム、ダイジェスト アルゴリズム、および関連オブジェクトを提供しており、これらの機能は、対称暗号化および非対称暗号化、デジタル署名、暗号化検証などのさまざまなセキュリティ要件の達成に役立ちます。

物体

Cipher

Cipherコンストラクター、参照Cipher

1
Cipher crypto.Cipher;

PKey

PKeyコンストラクター、参照PKey

1
PKey crypto.PKey;

ECKey

ECKeyコンストラクター、参照ECKey

1
ECKey crypto.ECKey;

BlsKey

BlsKeyコンストラクター、参照BlsKey

1
BlsKey crypto.BlsKey;

X509Cert

X509Certコンストラクター、参照X509Cert

1
X509Cert crypto.X509Cert;

X509Crl

X509Crlコンストラクター、参照X509Crl

1
X509Crl crypto.X509Crl;

X509Req

X509Reqコンストラクター、参照X509Req

1
X509Req crypto.X509Req;

静的関数

createHash

指定されたアルゴリズム名に基づいて情報概要オブジェクトを作成します

1
static Digest crypto.createHash(String algo);

呼び出しパラメータ:

  • algo: 情報ダイジェストオブジェクトのアルゴリズムを指定する文字列

返される結果:

  • Digest、情報概要オブジェクトを返します。

createHmac

指定されたアルゴリズム名に基づいて hmac 情報要約オブジェクトを作成します

1 2
static Digest crypto.createHmac(String algo, Buffer key);

呼び出しパラメータ:

  • algo: 情報ダイジェストオブジェクトのアルゴリズムを指定する文字列
  • key:Buffer、バイナリ署名キー

返される結果:

  • Digest、情報概要オブジェクトを返します。

loadCert

証明書を CRT/PEM/DER 形式でロードします。複数回呼び出すことができます。

1
static X509Cert crypto.loadCert(String filename);

呼び出しパラメータ:

  • filename: 文字列、証明書ファイル名

返される結果:

  • X509Cert、証明書を含むオブジェクトを返します。

loadCrl

失効証明書を PEM/DER 形式でロードします。これは複数回呼び出すことができます。

1
static X509Crl crypto.loadCrl(String filename);

呼び出しパラメータ:

  • filename: 文字列、失効証明書ファイル名

返される結果:

  • X509Crl、取り消された証明書を含むオブジェクトを返します。

loadReq

証明書リクエストを PEM/DER 形式でロードします。これは複数回呼び出すことができます。

1
static X509Req crypto.loadReq(String filename);

呼び出しパラメータ:

  • filename: 文字列、証明書要求ファイル名

返される結果:

  • X509Req、要求された証明書を含むオブジェクトを返します。

loadPKey

非対称公開キーまたは秘密キーを CRT/PEM/DER 形式でロードします

1
static PKey crypto.loadPKey(String filename);

呼び出しパラメータ:

  • filename: 文字列、公開鍵または秘密鍵のファイル名

返される結果:

  • PKey、戻り値には次のものが含まれますPKey物体

randomBytes

Havege ジェネレーターを使用して、指定されたサイズの乱数を生成します。

1
static Buffer crypto.randomBytes(Integer size = 16) async;

呼び出しパラメータ:

  • size: 整数、生成される乱数のサイズを指定します。

返される結果:

  • Buffer、生成された乱数を返します

simpleRandomBytes

高速アルゴリズムを使用して、指定されたサイズの強度の低い乱数を生成します。

1
static Buffer crypto.simpleRandomBytes(Integer size = 16) async;

呼び出しパラメータ:

  • size: 整数、生成される乱数のサイズを指定します。

返される結果:

  • Buffer、生成された乱数を返します

pseudoRandomBytes

エントロピー ジェネレーターを使用して、指定したサイズの擬似乱数を生成します。

1
static Buffer crypto.pseudoRandomBytes(Integer size = 16) async;

呼び出しパラメータ:

  • size: 整数、生成される乱数のサイズを指定します。

返される結果:

  • Buffer、生成された乱数を返します

randomFill

乱数を使用して指定された値を入力しますBuffer、havege ジェネレーターを使用して

1 2 3
static Buffer crypto.randomFill(Buffer buffer, Integer offset = 0, Integer size = -1) async;

呼び出しパラメータ:

  • buffer:Buffer、生成されたものを指定しますBuffer
  • offset: 整数、開始オフセットを指定します。デフォルトは 0 です。
  • size: 整数。生成される乱数のサイズを指定します。デフォルトは、buffer.length - offset です。

返される結果:

  • Buffer、生成された乱数を返します

randomArt

指定されたデータの視覚的な文字イメージを生成します

1 2 3
static String crypto.randomArt(Buffer data, String title, Integer size = 8);

呼び出しパラメータ:

  • data:Buffer、表示するデータを指定します
  • title: 文字列、文字画像のタイトルを指定します。マルチバイト文字は幅エラーの原因となります。
  • size:整数、文字画像サイズ

返される結果:

  • String、生成されたビジュアル文字列イメージを返します。

generateKey

RSA秘密キーを生成する

1
static PKey crypto.generateKey(Integer size) async;

呼び出しパラメータ:

  • size: 整数。RSA キーの長さをビット単位で指定します。

返される結果:

  • PKey、生成された秘密キーを含むオブジェクトを返します。

楕円曲線秘密鍵を生成する

1
static PKey crypto.generateKey(String curve = "secp521r1") async;

呼び出しパラメータ:

  • curve: 文字列、プリセットの楕円曲線を指定します。デフォルトは「secp256r1」です。

返される結果:

  • PKey、生成された秘密キーを含むオブジェクトを返します。

曲線 オプションの曲線には、次のような NIST 曲線とエイリアスが含まれます。

曲線 エイリアス
NIST P-192 「NIST P-192」、「p192」、「P-192」、「prime192v1」、「secp192r1」
NIST P-224 「NIST P-224」、「p224」、「P-224」、「prime224v1」、「secp224r1」
NIST P-256 「NIST P-256」、「p256」、「P-256」、「prime256v1」、「secp256r1」
NIST P-384 「NIST P-384」、「p384」、「P-384」、「prime384v1」、「secp384r1」
NIST P-521 「NIST P-521」、「p521」、「P-521」、「prime521v1」、「secp521r1」

その他のサポートされている曲線には、「brainpoolP512r1」、「brainpoolP384r1」、「secp256k1」、「P-256K」、「brainpoolP256r1」、「sm2p256r1」、「SM2」、「Ed25519」、「BLS12381_G1」、「BLS12381_G2」が含まれます。


pbkdf1

pbkdf1 に基づくプレーン テキスト パスワードに基づいて必要なバイナリ キーを生成します。

1 2 3 4 5
static Buffer crypto.pbkdf1(Buffer password, Buffer salt, Integer iterations, Integer size, Integer algo) async;

呼び出しパラメータ:

  • password:Buffer、使用するパスワードを指定します
  • salt:Buffer、hmac で使用されるソルトを指定します。
  • iterations: 整数、反復回数を指定します
  • size: 整数、キーのサイズを指定します
  • algo: 整数、を指定しますhashアルゴリズム、参照hashモジュール

返される結果:

  • Buffer、生成されたバイナリキーを返します

pbkdf1 に基づくプレーン テキスト パスワードに基づいて必要なバイナリ キーを生成します。

1 2 3 4 5
static Buffer crypto.pbkdf1(Buffer password, Buffer salt, Integer iterations, Integer size, String algoName) async;

呼び出しパラメータ:

  • password:Buffer、使用するパスワードを指定します
  • salt:Buffer、hmac で使用されるソルトを指定します。
  • iterations: 整数、反復回数を指定します
  • size: 整数、キーのサイズを指定します
  • algoName: 文字列、を指定します。hashアルゴリズム、参照hashモジュール

返される結果:

  • Buffer、生成されたバイナリキーを返します

pbkdf2

rfc2898 に従って、プレーンテキストのパスワードに基づいて必要なバイナリキーを生成します。

1 2 3 4 5
static Buffer crypto.pbkdf2(Buffer password, Buffer salt, Integer iterations, Integer size, Integer algo) async;

呼び出しパラメータ:

  • password:Buffer、使用するパスワードを指定します
  • salt:Buffer、hmac で使用されるソルトを指定します。
  • iterations: 整数、反復回数を指定します
  • size: 整数、キーのサイズを指定します
  • algo: 整数、を指定しますhashアルゴリズム、参照hashモジュール

返される結果:

  • Buffer、生成されたバイナリキーを返します

rfc2898 に従って、プレーンテキストのパスワードに基づいて必要なバイナリキーを生成します。

1 2 3 4 5
static Buffer crypto.pbkdf2(Buffer password, Buffer salt, Integer iterations, Integer size, String algoName) async;

呼び出しパラメータ:

  • password:Buffer、使用するパスワードを指定します
  • salt:Buffer、hmac で使用されるソルトを指定します。
  • iterations: 整数、反復回数を指定します
  • size: 整数、キーのサイズを指定します
  • algoName: 文字列、を指定します。hashアルゴリズム、参照hashモジュール

返される結果:

  • Buffer、生成されたバイナリキーを返します

getHashes

暗号化モジュールのサポートを取得するhash(要約) 「md5」、「sha224」などのアルゴリズム

1
static Array crypto.getHashes();

返される結果:

  • Array、サポートされている fibjs を返しますhashアルゴリズム配列

絶え間ない

AES

対称暗号化アルゴリズム AES を指定、128、192、256 ビット キーをサポート、ブロック暗号動作モードは ECB、CBC、CFB128、CTR、GCM、CCM、XTS をサポート

1
const crypto.AES = 1;

DES

対称暗号化アルゴリズム DES を指定し、64 ビット キーをサポートし、ブロック暗号化動作モードは ECB、CBC をサポートします

1
const crypto.DES = 2;

DES_EDE3

対称暗号化アルゴリズム DES-EDE3 を指定、192 ビット キーをサポート、ブロック暗号動作モードは ECB、CBC をサポート

1
const crypto.DES_EDE3 = 3;

CAMELLIA

対称暗号化アルゴリズム CAMELLIA を指定、128、192、256 ビット キーをサポート、ブロック暗号動作モードは ECB、CBC、CFB128、CTR、GCM、CCM をサポート

1
const crypto.CAMELLIA = 4;

ARIA

対称暗号化アルゴリズム ARIA を指定、128、192、256 ビット キーをサポート、ブロック暗号動作モードは ECB、CBC、CFB128、CTR、GCM、CCM をサポート

1
const crypto.ARIA = 5;

CHACHA20

対称暗号化アルゴリズム CHACHA20 を指定し、256 ビット キーをサポートし、ブロック暗号化動作モードは POLY1305 をサポートします。

1
const crypto.CHACHA20 = 6;

SM4

対称暗号化アルゴリズム SM4 を指定、ブロック暗号動作モードは ECB、CBC をサポート

1
const crypto.SM4 = 7;

ECB

ECB をサポートするためのブロック暗号動作モードを指定します

1
const crypto.ECB = 1;

CBC

CBC をサポートするブロック暗号動作モードを指定します

1
const crypto.CBC = 2;

CFB64

CFB64 をサポートするブロック暗号動作モードを指定します。

1
const crypto.CFB64 = 3;

CFB128

CFB128 をサポートするブロック暗号動作モードを指定します

1
const crypto.CFB128 = 4;

OFB

OFB をサポートするためのブロック暗号動作モードを指定します

1
const crypto.OFB = 5;

CTR

CTR をサポートするブロック暗号動作モードを指定します

1
const crypto.CTR = 6;

GCM

GCM をサポートするブロック暗号動作モードを指定します。

1
const crypto.GCM = 7;

STREAM

ストリーム暗号モードを指定する

1
const crypto.STREAM = 8;

CCM

CCM をサポートするためのブロック暗号動作モードを指定します

1
const crypto.CCM = 9;

XTS

XTS をサポートするためのブロック暗号動作モードを指定します

1
const crypto.XTS = 10;

POLY1305

POLY1305 をサポートするブロック暗号動作モードを指定します。

1
const crypto.POLY1305 = 11;

PKCS7

パディングモードをPKCS7として指定します

1
const crypto.PKCS7 = 0;

ONE_AND_ZEROS

塗りつぶしモードを ONE_AND_ZEROS として指定します

1
const crypto.ONE_AND_ZEROS = 1;

ZEROS_AND_LEN

塗りつぶしモードを ZEROS_AND_LEN として指定します

1
const crypto.ZEROS_AND_LEN = 2;

ZEROS

塗りつぶしモードを ZEROS として指定します

1
const crypto.ZEROS = 3;

NOPADDING

パディング モードを NOPADDING として指定します。

1
const crypto.NOPADDING = 4;