モジュール暗号化
crypto
このモジュールは、fibjs
組み込みの暗号化アルゴリズム モジュールです。対称暗号化、非対称暗号化、ダイジェスト アルゴリズム、暗号乱数発生器などの機能を提供します。使用する前に、require('crypto')
モジュールを 経由でロードする必要があります。
crypto
モジュールには、次のような多くのオブジェクトが利用可能です。
PKey
: 非対称暗号化アルゴリズム オブジェクトX509Cert
: X.509 証明書の操作に使用されるオブジェクトCipher
: 対称暗号化の実装に使用されるオブジェクトDigest
: ダイジェストアルゴリズムの実装に使用されるオブジェクト
暗号化アルゴリズムを使用する前に、キー オブジェクトを作成する必要があります。たとえば、次のAES
例ではキー オブジェクトを作成します。
1
2const crypto = require('crypto');
const key = crypto.randomBytes(16); // generate a 16-byte random key
次に、Cipher
オブジェクトを使用して平文を暗号化します。
1
2
3
4const 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
モジュールは非対称暗号化アルゴリズムとダイジェスト アルゴリズムもサポートできます。たとえば、次の例はPKey
とDigest
オブジェクトを使用して SHA256 暗号化を実装するコードです。
1
2
3
4
5
6const 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
1Cipher crypto.Cipher;
PKey
1PKey crypto.PKey;
ECKey
1ECKey crypto.ECKey;
BlsKey
1BlsKey crypto.BlsKey;
X509Cert
1X509Cert crypto.X509Cert;
X509Crl
1X509Crl crypto.X509Crl;
X509Req
1X509Req crypto.X509Req;
静的関数
createHash
指定されたアルゴリズム名に基づいて情報概要オブジェクトを作成します
1static Digest crypto.createHash(String algo);
呼び出しパラメータ:
- algo: 情報ダイジェストオブジェクトのアルゴリズムを指定する文字列
返される結果:
- Digest、情報概要オブジェクトを返します。
createHmac
指定されたアルゴリズム名に基づいて hmac 情報要約オブジェクトを作成します
1
2static Digest crypto.createHmac(String algo,
Buffer key);
呼び出しパラメータ:
- algo: 情報ダイジェストオブジェクトのアルゴリズムを指定する文字列
- key:Buffer、バイナリ署名キー
返される結果:
- Digest、情報概要オブジェクトを返します。
loadCert
証明書を CRT/PEM/DER 形式でロードします。複数回呼び出すことができます。
1static X509Cert crypto.loadCert(String filename);
呼び出しパラメータ:
- filename: 文字列、証明書ファイル名
返される結果:
- X509Cert、証明書を含むオブジェクトを返します。
loadCrl
失効証明書を PEM/DER 形式でロードします。これは複数回呼び出すことができます。
1static X509Crl crypto.loadCrl(String filename);
呼び出しパラメータ:
- filename: 文字列、失効証明書ファイル名
返される結果:
- X509Crl、取り消された証明書を含むオブジェクトを返します。
loadReq
証明書リクエストを PEM/DER 形式でロードします。これは複数回呼び出すことができます。
1static X509Req crypto.loadReq(String filename);
呼び出しパラメータ:
- filename: 文字列、証明書要求ファイル名
返される結果:
- X509Req、要求された証明書を含むオブジェクトを返します。
loadPKey
非対称公開キーまたは秘密キーを CRT/PEM/DER 形式でロードします
1static PKey crypto.loadPKey(String filename);
呼び出しパラメータ:
- filename: 文字列、公開鍵または秘密鍵のファイル名
返される結果:
randomBytes
Havege ジェネレーターを使用して、指定されたサイズの乱数を生成します。
1static Buffer crypto.randomBytes(Integer size = 16) async;
呼び出しパラメータ:
- size: 整数、生成される乱数のサイズを指定します。
返される結果:
- Buffer、生成された乱数を返します
simpleRandomBytes
高速アルゴリズムを使用して、指定されたサイズの強度の低い乱数を生成します。
1static Buffer crypto.simpleRandomBytes(Integer size = 16) async;
呼び出しパラメータ:
- size: 整数、生成される乱数のサイズを指定します。
返される結果:
- Buffer、生成された乱数を返します
pseudoRandomBytes
エントロピー ジェネレーターを使用して、指定したサイズの擬似乱数を生成します。
1static Buffer crypto.pseudoRandomBytes(Integer size = 16) async;
呼び出しパラメータ:
- size: 整数、生成される乱数のサイズを指定します。
返される結果:
- Buffer、生成された乱数を返します
randomFill
乱数を使用して指定された値を入力しますBuffer、havege ジェネレーターを使用して
1
2
3static 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
3static String crypto.randomArt(Buffer data,
String title,
Integer size = 8);
呼び出しパラメータ:
- data:Buffer、表示するデータを指定します
- title: 文字列、文字画像のタイトルを指定します。マルチバイト文字は幅エラーの原因となります。
- size:整数、文字画像サイズ
返される結果:
- String、生成されたビジュアル文字列イメージを返します。
generateKey
RSA秘密キーを生成する
1static PKey crypto.generateKey(Integer size) async;
呼び出しパラメータ:
- size: 整数。RSA キーの長さをビット単位で指定します。
返される結果:
- PKey、生成された秘密キーを含むオブジェクトを返します。
楕円曲線秘密鍵を生成する
1static 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
5static 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
5static 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
5static 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
5static 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」などのアルゴリズム
1static Array crypto.getHashes();
返される結果:
- Array、サポートされている fibjs を返しますhashアルゴリズム配列
絶え間ない
AES
対称暗号化アルゴリズム AES を指定、128、192、256 ビット キーをサポート、ブロック暗号動作モードは ECB、CBC、CFB128、CTR、GCM、CCM、XTS をサポート
1const crypto.AES = 1;
DES
対称暗号化アルゴリズム DES を指定し、64 ビット キーをサポートし、ブロック暗号化動作モードは ECB、CBC をサポートします
1const crypto.DES = 2;
DES_EDE3
対称暗号化アルゴリズム DES-EDE3 を指定、192 ビット キーをサポート、ブロック暗号動作モードは ECB、CBC をサポート
1const crypto.DES_EDE3 = 3;
CAMELLIA
対称暗号化アルゴリズム CAMELLIA を指定、128、192、256 ビット キーをサポート、ブロック暗号動作モードは ECB、CBC、CFB128、CTR、GCM、CCM をサポート
1const crypto.CAMELLIA = 4;
ARIA
対称暗号化アルゴリズム ARIA を指定、128、192、256 ビット キーをサポート、ブロック暗号動作モードは ECB、CBC、CFB128、CTR、GCM、CCM をサポート
1const crypto.ARIA = 5;
CHACHA20
対称暗号化アルゴリズム CHACHA20 を指定し、256 ビット キーをサポートし、ブロック暗号化動作モードは POLY1305 をサポートします。
1const crypto.CHACHA20 = 6;
SM4
対称暗号化アルゴリズム SM4 を指定、ブロック暗号動作モードは ECB、CBC をサポート
1const crypto.SM4 = 7;
ECB
ECB をサポートするためのブロック暗号動作モードを指定します
1const crypto.ECB = 1;
CBC
CBC をサポートするブロック暗号動作モードを指定します
1const crypto.CBC = 2;
CFB64
CFB64 をサポートするブロック暗号動作モードを指定します。
1const crypto.CFB64 = 3;
CFB128
CFB128 をサポートするブロック暗号動作モードを指定します
1const crypto.CFB128 = 4;
OFB
OFB をサポートするためのブロック暗号動作モードを指定します
1const crypto.OFB = 5;
CTR
CTR をサポートするブロック暗号動作モードを指定します
1const crypto.CTR = 6;
GCM
GCM をサポートするブロック暗号動作モードを指定します。
1const crypto.GCM = 7;
STREAM
ストリーム暗号モードを指定する
1const crypto.STREAM = 8;
CCM
CCM をサポートするためのブロック暗号動作モードを指定します
1const crypto.CCM = 9;
XTS
XTS をサポートするためのブロック暗号動作モードを指定します
1const crypto.XTS = 10;
POLY1305
POLY1305 をサポートするブロック暗号動作モードを指定します。
1const crypto.POLY1305 = 11;
PKCS7
パディングモードをPKCS7として指定します
1const crypto.PKCS7 = 0;
ONE_AND_ZEROS
塗りつぶしモードを ONE_AND_ZEROS として指定します
1const crypto.ONE_AND_ZEROS = 1;
ZEROS_AND_LEN
塗りつぶしモードを ZEROS_AND_LEN として指定します
1const crypto.ZEROS_AND_LEN = 2;
ZEROS
塗りつぶしモードを ZEROS として指定します
1const crypto.ZEROS = 3;
NOPADDING
パディング モードを NOPADDING として指定します。
1const crypto.NOPADDING = 4;