crypto 加密模块
-
crypto
模块提供了加密功能,包括对OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的以整套封装。 -
使用
require('crypto')
来访问该模块 -
查看nodejs支持的加密算法,
- 使用
crypto.getCiphers()
,如下所示const crypto = require('crypto') crypto.getCiphers()
- 得到的是一个比较大的数组,这里列举其中的几个元素:
[
‘aes-128-cbc’, ‘aes-128-ccm’, ‘aes-128-cfb’,
‘aes256’, ‘aes256-wrap’, ‘aria-128-cbc’,
‘aria-128-ccm’, ‘aria-128-cfb’, ‘aria-128-cfb1’,
‘bf-cbc’, ‘bf-cfb’, ‘bf-ecb’,
‘camellia192’, ‘camellia256’, ‘cast’,
‘cast-cbc’,
… 71 more items
] - 这里重点介绍 ASE 加密
-
ASE加密是高级加密标准,为美国联邦政府采用的一种区块加密标准,高级加密标准已然成为对称密钥加密中最流行的算法之一。
-
ASE使用的密钥长度可以128位、192位或256位,所以你可以看到加密算法:aes-128/196/256,表示的都是密钥的位数。最后一段是AES的工作模式,最常用的是 ECB、CBC、CFB、和OFB四种。
-
ASE 加密时的key(原始密钥) 和 iv(初始化向量的长度)
长度 密钥长度 向量长度 128位 16 16 192位 24 16 256位 32 16
-
- 使用
-
crypto.scrypt(password,salt,keylen[,options],callback)
方法:scrypt()
是一个异步的密钥派生函数,被设计为在计算和内存方面的成本都非常高,目的是使它无法暴力破解。salt
: 盐值,应该尽可能独特。建议盐值是随机的并且至少16个字节长。keylen
: 生成的密钥的长度。callback
回调函数有两个参数:err
和derivedKey
, 当密钥派生失败时, err 是一个异常对象,否则 err 为 null。 derivedKey 会作为 Buffer 传给回调。