Module 基礎模塊

模塊crypto

加密算法模塊

使用方法:

1
var crypto = require('crypto');

對象

Cipher

Cipher 構造函數,參見 Cipher

1
Cipher crypto.Cipher;

PKey

PKey 構造函數,參見 PKey

1
PKey crypto.PKey;

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: String, 指定信息摘要對象的算法

返回結果:

  • Digest, 返回信息摘要對象

createHmac

根據給定的算法名稱創建一個hmac 信息摘要對象

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

調用參數:

  • algo: String, 指定信息摘要對象的算法
  • key: Buffer, 二進制簽名密鑰

返回結果:

  • Digest, 返回信息摘要對象

loadPKey

加載一個PEM/DER 格式的密鑰文件

1 2
static PKey crypto.loadPKey(String filename, String password = "");

調用參數:

  • filename: String, 密鑰文件名
  • password: String, 解密密碼

返回結果:

  • PKey, 返回包含密鑰的對象

loadCert

加載一個CRT/PEM/DER/TXT 格式的證書,可多次調用

1
static X509Cert crypto.loadCert(String filename);

調用參數:

  • filename: String, 證書文件名

返回結果:

loadFile 加載mozilla 的certdata,txt, 可於


loadCrl

加載一個PEM/DER 格式的撤銷證書,可多次調用

1
static X509Crl crypto.loadCrl(String filename);

調用參數:

  • filename: String, 撤銷證書文件名

返回結果:

  • X509Crl, 返回包含撤銷證書的對象

loadReq

加載一個PEM/DER 格式的證書請求,可多次調用

1
static X509Req crypto.loadReq(String filename);

調用參數:

  • filename: String, 證書請求文件名

返回結果:

  • X509Req, 返回包含請求證書的對象

randomBytes

生成指定尺寸的隨機數,使用havege 生成器

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

調用參數:

  • size: Integer, 指定生成的隨機數尺寸

返回結果:

  • Buffer, 返回生成的隨機數

simpleRandomBytes

生成指定尺寸的低強度隨機數,使用快速的算法

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

調用參數:

  • size: Integer, 指定生成的隨機數尺寸

返回結果:

  • Buffer, 返回生成的隨機數

pseudoRandomBytes

生成指定尺寸的偽隨機數,使用entropy 生成器

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

調用參數:

  • size: Integer, 指定生成的隨機數尺寸

返回結果:

  • Buffer, 返回生成的隨機數

randomArt

生成給定數據的可視化字符圖像

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

調用參數:

  • data: Buffer, 指定要展示的數據
  • title: String, 指定字符圖像的標題,多字節字符會導致寬度錯誤
  • size: Integer, 字符圖像尺寸

返回結果:

  • String, 返回生成的可視化字符串圖像

genRsaKey

生成一個RSA 私鑰

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

調用參數:

  • size: Integer, 指定RSA 密鑰長度,bit 為單位

返回結果:

  • PKey, 返回包含生成私鑰的對象

genEcKey

生成一個EC 私鑰

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

調用參數:

  • curve: String, 指定預置橢圓曲線,可選值為:"secp521r1", "brainpoolP512r1", "secp384r1", "brainpoolP384r1", "secp256r1", "secp256k1", "brainpoolP256r1", "secp224r1", "secp224k1", "secp192r1", "secp192k1"

返回結果:

  • PKey, 返回包含生成私鑰的對象

genSm2Key

生成一個SM2 私鑰

1
static PKey crypto.genSm2Key() async;

返回結果:

  • PKey, 返回包含生成私鑰的對象

pbkdf1

依據pbkdf1 根據明文password 生成要求的二進制鑰匙

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 使用的salt
  • iterations: Integer, 指定迭代次數
  • size: Integer, 指定鑰匙尺寸
  • algo: Integer, 指定要使用的 hash 算法,詳見 hash 模塊

返回結果:

  • Buffer, 返回生成的二進制鑰匙

依據pbkdf1 根據明文password 生成要求的二進制鑰匙

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 使用的salt
  • iterations: Integer, 指定迭代次數
  • size: Integer, 指定鑰匙尺寸
  • algoName: String, 指定要使用的 hash 算法,詳見 hash 模塊

返回結果:

  • Buffer, 返回生成的二進制鑰匙

pbkdf2

依據rfc2898 根據明文password 生成要求的二進制鑰匙

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 使用的salt
  • iterations: Integer, 指定迭代次數
  • size: Integer, 指定鑰匙尺寸
  • algo: Integer, 指定要使用的 hash 算法,詳見 hash 模塊

返回結果:

  • Buffer, 返回生成的二進制鑰匙

依據rfc2898 根據明文password 生成要求的二進制鑰匙

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 使用的salt
  • iterations: Integer, 指定迭代次數
  • size: Integer, 指定鑰匙尺寸
  • algoName: String, 指定要使用的 hash 算法,詳見 hash 模塊

返回結果:

  • Buffer, 返回生成的二進制鑰匙

getHashes

獲取crypto 模塊支持的的 hash(摘要) 算法, 比如'md5', 'sha224'

1
static Array crypto.getHashes();

返回結果:

  • Array, 返回fibjs 支持的 hash 算法數組

常量

AES

指定對稱加密算法AES,支持128, 192, 256 位key,分組密碼工作模式支持ECB, CBC, CFB128, CTR, GCM,CCM,XTS

1
const crypto.AES = 1;

CAMELLIA

指定對稱加密算法CAMELLIA,支持128, 192, 256 位key,分組密碼工作模式支持ECB, CBC, CFB128, CTR, GCM,CCM

1
const crypto.CAMELLIA = 2;

DES

指定對稱加密算法DES,支持64 位key,分組密碼工作模式支持ECB, CBC

1
const crypto.DES = 3;

DES_EDE

指定對稱加密算法DES-EDE,支持128 位key,分組密碼工作模式支持ECB, CBC

1
const crypto.DES_EDE = 4;

DES_EDE3

指定對稱加密算法DES-EDE3,支持192 位key,分組密碼工作模式支持ECB, CBC

1
const crypto.DES_EDE3 = 5;

BLOWFISH

指定對稱加密算法BLOWFISH,支持192 位key,分組密碼工作模式支持ECB, CBC, CFB64, CTR

1
const crypto.BLOWFISH = 6;

ARC4

指定對稱加密算法ARC4,支持40, 56, 64, 128 位key

1
const crypto.ARC4 = 7;

ARIA

指定對稱加密算法ARIA,支持128, 192, 256 位key,分組密碼工作模式支持ECB, CBC, CFB128, CTR, GCM,CCM

1
const crypto.ARIA = 8;

CHACHA20

指定對稱加密算法CHACHA20,支持256 位key,分組密碼工作模式支持POLY1305

1
const crypto.CHACHA20 = 9;

SM4

指定對稱加密算法SM4, 分組密碼工作模式支持ECB, CBC

1
const crypto.SM4 = 10;

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;