MD5原理和应用
一:什么是md5
MD5信息摘要算法(MD5 Message-Digest Algorithm),一种 被广泛使用的密码散列函数,可以产生一个128位(16字节)的散列值,用于确保信息传输的一致。MD5 是一种不可逆的加密算法。MD5是一种常用的加密解密的算法,但是在1996年被证明该算法 存在弱点,在2004年证实该算法无法防止碰撞(概论很低),因此不适用于 安全认证。在一些安全系数不需要很高的应用中还是可以应用的。
二:MD5在前端项目中的应用
1)加密
最近在写一个react应用,其中用到了md5原理,下面以这个项目为例子来演示一下MD5在前端项目中的应用。
首先:在项目中加载MD5
npm install --save blueimp-md5
然后在后台文件中引入MD5模块
const md5=require('blueimp-md5');//这个引入的MD5是一个函数,
可以将需要加密的数据作为参数,然后进行加密。
例子:
/实现mongoose连接MongoDB数据库 并使用md5实现对数据的加密
//引入md5加密模块
const md5=require('blueimp-md5');
//引入mongoose
const mongoose=require('mongoose');
//指定数据库的具体路径URL
mongoose.connect('mongodb://localhost:27017/gzhipin_test2')
//获取连接对象
const cont=mongoose.connection;
//监听数据库是否连接成功
cont.on('connected',function(){
console.log('数据库连接成功')
})
//数据库连接成功后,就要进行增删改差的工作
//首先创建一个数据库表字段的模式,插入的数据就按照这个模板进行插入
const userSchma=mongoose.Schema({
username:{type:String ,require:true},
password:{type:String,require:true},
type:{type:String,require:true} //类型'laoban'/'dashen'
})
//将模型与数据库中的集合连接起来,构成对应关系
const UserModel=mongoose.model('user',userSchma);
//实现增加数据的功能,并保存在数据库中
function dbsave(){
const user={
username:'jack',
password:md5('456'),
type:'laoban'
}
//将构建的对象(记录)存入表中
const userModel=new UserModel(user);
userModel.save(function(err,doc){
console.log(err,doc);
})
}
dbsave();
结果:
null {
_id: 5fd4cba2c8a85046584c3f4b,
username: 'jack',
password: '250cf8b51c773f3f8dc8b4be867a9a02',
type: 'laoban',
__v: 0
}
从上面两个图中可以看出password已经被加密保存在数据库了。
2)解密
使用MD5解密工具实现解密pmd5