关于密码加密处理md5和加盐处理
md5 加密:
用户注册时将加密后的密码发送给后端存储当登陆的时候,
再将加密后的密码和数据库中加密的密码相匹配。
此加密无须解密
一.md5的在vue中的用法:
1.安装。
npm install js-md5 -D
2.使用。
(1)项目中引入md5模块。
import md5 from “js-md5”
(2)在main.js里面将md5转换为vue原型
import md5 from "js-md5"
Vue.prototype.$md5=md5
3.示例
<input type="number" v-model="value">
console.log("加密密码:"+ this.$md5(this.value))
二.md5的在react中的用法:
第一步:
npm 安装js-md5,文件根目录下安装,指令如下
npm install --save js-md5 //安装到生产环境
第二步:
引入 js-md5
在项目入口文件 index.js 里 引入 js-md5
import md5 from 'js-md5'
挂载到react的原型上
React.Component.prototype.$md5 = md5
第三步:
去组件中使用
import React, { Component } from 'react'
class friend extends Component {
componentWillMount () {
let str = '123456'
let data = this.$md5(str)
console.log(data) // e10adc3949ba59abbe56e057f20f883e
}
render() {
return (
<div className="friend"> friend朋友</div>
)}
}
export default friend
三加盐处理
直接对重要数据进行MD5处理后,反向解密确实难度很大,但还是可以找出破绽的,如果名为李自成的用户可以查看数据库,那么他可以观察到自己的密码和别人的密码加密后的结果都是一样,那么,别人用的和自己就是同一个密码,这样,就可以利用别人的身份登录了。那么我们以前的加密方法是否对这种行为失效了呢?其实只要稍微混淆一下就能防范住了,这在加密术语中称为“加盐”。具体来说就是在原有材料(用户自定义密码)中加入其它成分(一般是用户自有且不变的因素),以此来增加系统复杂度。当这种盐和用户密码相结合后,再通过摘要处理,就能得到隐蔽性更强的摘要值。下面请见代码:
// 对密码进行加盐后加密,加密后再通过Hibernate往数据库里存
String changedPswd = DigestUtils.md5Hex(name + pswd);
就是这样简单,上面代码中盐就是用户名,可以的话还可以用用户注册时的邮件,注册时间等非空信息(如果是空信息这个加盐处理会失效)。他们的实际登录密码都是123456,但光看用户记录是完全看不出来的。这下别有用心的人打开数据库看到的密码都完全不一样,他以前的手段就失效了。