当前位置: 首页 > 后端技术 > Node.js

nodejs-md5加盐解密对比

时间:2023-04-03 16:06:07 Node.js

nodejs-crypto加密工具crypto模块提供加密功能,包括完整封装的OpenSSLhash、MD5、HMAC、加密、解密、签名、验证功能。加密中常用的MD5是一种不可逆的加密算法。它是目前最可靠的加密算法之一。没有可以逆转操作的程序。它可以将任意字符串加密成唯一的定长代码。首先,它是不可逆的,没有系统的方法可以知道MD5码的原文是什么。当然,MD5也有优点也有缺点。加密相同的字符会得到相同的代码,会有碰撞的风险。#crypto导入安装对于nodejs环境,npmicrypto--save-dev//js引入constcrypto=require('crypto');或从“加密”导入加密;封装MD5utils.jsconstcrypto=require('crypto');/***hash方法**@param{String}e.g.:'md5','sha1'*@param{String|Buffer}s*@param{String}[格式]'hex','base64'.默认为“十六进制”。*@return{String}编码值*@private*/consthash=(method,s,format)=>{varsum=crypto.createHash(method);varisBuffer=Buffer.isBuffer(s);if(!isBuffer&&typeofs==='object'){s=JSON.stringify(sortObject(s));}sum.update(s,isBuffer?'binary':'utf8');returnsum.digest(format||'hex');};/**-md5编码-3.@param{String|Buffer}s-@param{String}[格式]'hex','base64'。默认为“十六进制”。-@return{String}md5哈希字符串-@public*/constmd5=(s,format)=>{returnhash('md5',s,format);};module.exports={md5};MD5添加盐并删除盐验证。为了防止美超的疯狂招式撞库,我们在登录的时候使用加盐的方法,在用户注册的时候登录##MD5Multipleencryptionmd5(md5(username+md5(password))多重加密,越多越好//引入上面打包的utils.jsimportutilsfrom'../utils.js'letname='abcd'letpassword='123'letuser_ticket=utils.md5(utils.md5(name+utils.md5(password)))console.log(user_ticket)=>3a59492a85438a3a39a30fd0d8103ac5//加密结果登录密码MD5加salt和salt时间戳的方法也可以其他方式使用,越咸越好,然后在锅里来回翻炒,连同其他参数传到后台解密letname='abcd'letpassword='123'vartimestamp=Date.parse(newDate())/1000letuser_ticket=utils.md5(utils.md5(utils.md5(name+utils.md5(password)))+timestamp)console.log(user_ticket)=>0b3298cb3c20b08318c185aec803a929//结果加salt解密上述MD5加密用于注册时保存数据,登录时使用MD5多次salt加密letname='abcd'letpassword='123'vartimestamp=Date.parse(newDate())/1000letload_password=utils.md5(utils.md5(name+utils.md5(password)))//存储密码letuser_ticket_client=utils.md5(utils.md5(utils.md5(name+utils.md5(password))))+timestamp)//客户端密码letuser_ticket_service=utils.md5(load_password+timestamp)//服务端加密计算并再次存储密码并添加时间戳console.log(user_ticket_client==user_ticket_service)=>true//客户端已经加密,服务端重新加密对比。有人的地方,就有江湖。先进的安全系统,还有各种格式的加密方式,这次就拿MD5拯救江湖,天下见