为什么要加密?
如当我们提交表单后,如果不把密码这些敏感信息处理下,会有很大的风险,所以,要进行加密处理。Node.js提供了一个加密模块:crypto
使用
示例:
//user.js
var express = require('express');
var router = express.Router();
var crypto = require('crypto');
/* GET home page. */
router.get('/', function(req, res) {
res.render('user', { title: '加密字符串示例' });
});
router.post('/',function(req, res){
var
userName = req.body.userName,
userPwd = req.body.userPwd;
//生成口令的散列值
var md5 = crypto.createHash('md5'); //crypto模块功能是加密并生成各种散列,此处所示为MD5方式加密
var end_paw= md5.update(userPwd).digest('hex');//加密后的密码
console.log('加密后的密码:'+en_upwd);
res.render('user', { title: '加密字符串示例' });
});
module.exports = router;
//user.ejs
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<% include nav %>
<form method="post">
用户名:<input type="text" id="userName" name="userName" />
密码:<input type="password" id="userPwd" name="userPwd" />
<input type="submit" value="提交">
</form>
</body>
</html>
方法说明:
createHash(algorithm
)方法 ,是利用给定的算法生成对应的hash对象。
Node.js提供的加密模块功能非常强大,Hash算法就提供了MD5、sha1、sha256等算法。update(data,
方法,可以通过指定的input_encoding和传入的data数据更新hash对象,input_encoding为可选参数,没有传入则作为buffer处理
[input_encoding])
(input_encoding可为’utf-8’、’ascii’等)。
digest([encoding])
方法,计算数据的hash摘要值,encoding是可选参数,不传则返回buffer
(encoding可为 ‘hex’、’base64’等);当调用digest方法后hash对象将不可用;