一、node实现数据加密
1.加密的分类
- 对称加密:也成为单密钥加密:同一个密钥进行加密和解密
- 非对称加密:有两把钥匙(公钥和私钥)
- 摘要算法:把任意长度的输入,根据算法生成一串固定长度的伪随机数(没有密钥,加密过程是不可逆的)
2.MD5(摘要算法)在Node中的使用方法
(1)安装crypto
模块
npm install crypto
(2)使用crypto.createHash('md5')
创建加密对象
(3)使用加密对象的update
(明文)进行加密,然后调用,然后调用digest('hex')
返回定长的十六进制字符串
3.示例
- 对用户的注册密码进行加密后存入数据库
(1)首先安装模块
npm install mysql2
npm install sequelize //安装序列化
(2)其次创建数据库连接的配置对象seqconfig.js
文件。
//1.导入sequelize模块
var Sequelize=require('sequelize')
//2.配置一个数据库连接的配置对象
var mysqlDemo=new Sequelize('info','root','123456',{
host:'localhost',
port:3306,
dialect:'mysql', //数据库方言
pool:{
//数据库连接池
max:10,
min:3,
idle:10000
}
})
//3.导出数据库连接的配置对象
module.exports=mysqlDemo
(3)model
的admin.js
的模块,使用sequelize
建立模型(类),该模型实现与数据表的orm
映射
const Sequelize=require('sequelize')
const orm=require('../seqconfig')
const AdminModel=orm.define('admin', {
Id: {
type: Sequelize.INTEGER,
primaryKey: true, //主键
autocomplete: true, //自增
field: 'id'
},
userName: {
type: Sequelize.STRING,
allowNull: false, //不能为空
field: 'username'
},
userPwd: {
type: Sequelize.STRING,
allowNull: false,
field: 'userpwd'
}
},{
freezeTableName:true,
timestamp:false
})
module.exports=AdminModel
(4)使用第三步创建的模型进行crud操作
var express=require('express')
var crypto=require('crypto')
var AdminModel=require('../config/model/admin')
var router=express.Router()
// http://localhost:3000/md5/register
router