[TOC]
### nodejs 加密算法
文档:[https://www.liaoxuefeng.com/wiki/1022910821149312/1023025778520640](https://www.liaoxuefeng.com/wiki/1022910821149312/1023025778520640)
常用算法:[https://github.com/michaelliao/learn-javascript/tree/master/samples/node/crypto](https://github.com/michaelliao/learn-javascript/tree/master/samples/node/crypto)
### MD5和SHA1
MD5是一种常用的哈希算法,用于给任意数据一个“签名”。这个签名通常用一个十六进制的字符串表示:
~~~
const crypto = require('crypto');
const hash = crypto.createHash('md5');
// 可任意多次调用update():
hash.update('Hello, world!');
hash.update('Hello, nodejs!');
console.log(hash.digest('hex')); // 7e1977739c748beac0c0fd14fd26a544
~~~
### Hmac
Hmac算法也是一种哈希算法,它可以利用MD5或SHA1等哈希算法。不同的是,Hmac还需要一个密钥:
~~~
const crypto = require('crypto');
const hmac = crypto.createHmac('sha256', 'secret-key');
hmac.update('Hello, world!');
hmac.update('Hello, nodejs!');
console.log(hmac.digest('hex')); // 80f7e22570...
~~~
![](https://box.kancloud.cn/c227a5082b4cb257b00c20b3a00dedd6_544x83.png)
只要密钥发生了变化,那么同样的输入数据也会得到不同的签名,因此,可以把Hmac理解为用随机数“增强”的哈希算法。
- 序言
- ES6模块化
- node基础
- FS模块
- 常用变量
- crypto加密
- 基础
- 安装
- 中间件
- 架构
- 结构分层
- 配置
- 路由
- 安装路由
- 自动加载
- 获取参数
- 路由前缀
- 路由中间件
- 控制器
- 请求
- 请求信息
- 数据库
- mongoDB
- mongoDB原生语句
- mongoDB数据库角色
- mongoose连接数据库
- 自动记录时间戳
- 模型
- mongoose模型
- 定义
- 模型初始化
- 查询
- 新增
- 更新
- 删除
- 隐藏字段
- 模式
- 关联查询
- 复杂模型
- 仿知乎个人资料建模
- 关注与粉丝
- 视图
- 模板
- edge
- 日志
- 错误和调试
- 调试当前文件
- nodemon调试
- 异常处理
- Koa2错误处理
- 验证
- Koa验证器
- async-validator
- installation
- 安全
- 数据加密
- 杂项
- jwt
- koa-jwt
- env环境变量配置
- 上传
- 分页和模糊搜索
- 扩展
- nodemon
- bodyparser
- koaJsonError
- cross-env
- uuid生成唯一ID
- pope字符串模板引擎
- 命令行
- 部署
- 附录
- RESTfulApi
- Http动词
- 状态码
- 调用频率限制
- 按需查询字段
- restful分页