Node.js Crypto 模块

摘要算法

crypto模块 是 Node.js 内置的密码模块,封装了一些密码处理方法。 crypto 摘要算法的使用方法,几乎跟 Python 的 hashlib模块 是一样的,参考 - 摘要算法

const crypto = require('crypto')

hash = crypto.createHash('md5') // md5
hash.update('date')
console.log(hash.digest('hex')) // 5fc732311905cb27e82d67f4f6511f7f

// 增强
hash = crypto.createHash('sha1') // sha1
hash.update('date')
console.log(hash.digest('hex')) // e927d0677c77241b707442314346326278051dd6

// 越强越安全,执行效率越低
// sha256 
// sha512
// ...

hmac 算法

/* 
  hmac 算法,增强版的摘要算法,需要密钥
  密钥,通常的也叫做 “盐”
*/

hmacsha256 = crypto.createHmac('sha256', 'secret-key')
hmacsha256.update('data')
hmacsha256.update('append data')
hmacsha256.digest('hex'))

// 对应还有 hmacmd5 128、hmacsha1 160 ... 

对称加密

对称加密是一种双向加密算法,跟摘要算法的单向加密不同,它是支持加解密的,通过配备一个 密钥 完成。AES 是对称加密的一种,常见算法有 aes192aes-128-ecbaes-256-cbc

const crypto = require('crypto')

// 加密
function aesEncrypt(data, key) {
  let cipher = crypto.createCipher('aes192', key)
  let crypted = cipher.update(data, 'utf8', 'hex')
  return cipher.final('hex')
}

// 解码
function aesDecrypt(encrypt, key) {
  let decipher = crypto.createDecipher('aes192', key);
  let decrypted = decipher.update(encrypt, 'hex', 'utf8');
  return decipher.final('utf8');
}

let encrypt = aesEncrypt('data','key') // 加密
console.log(encrypt) // 998118c1207f9e6fa5ee610c5bfd8ef0

let data = aesDecrypt(encrypt, 'key') // 解密
console.log(data) // data
Node.js 教程 Node.js 安装 Node.js NPM Node.js 模块 Node.js HTTP Node.js 文件操作 Node.js Buffer Node.js Stream Node.js Crypto Node.js Mysql Node.js Request Node.js WebSocket