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
更多教程 HTML5 教程 CSS3 教程 JavaScript 教程 JQuery 教程 React.js 教程 Node.js 教程 Koa2 教程 Python 教程 Linux 教程