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, 可于 http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/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, 返回生成的可视化字符串图像

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, 返回生成的二进制钥匙

常量

AES

指定对称加密算法 AES,支持 128, 192, 256 位 key,分组密码工作模式支持 ECB, CBC, CFB128, CTR, GCM

1
const crypto.AES = 1;

CAMELLIA

指定对称加密算法 CAMELLIA,支持 128, 192, 256 位 key,分组密码工作模式支持 ECB, CBC, CFB128, CTR, GCM

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;

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;

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;