openssl 加盐_nodejs-md5加盐到解密比对
nodejs-crypto 加密工具
crypto 模块提供了加密功能,包括对 OpenSSL 的哈希、MD5、HMAC、加密、解密、签名、以及验证功能的一整套封装。
crypto 常用的MD5
MD5 是一种不可逆的加密算法,目前是最牢靠的加密算法之一,尚没有能够逆运算的程序被开发出来,它对应任何字符串都可以加密成一段唯一的固定长度的代码。
首先,它不可逆,没有系统的方法可以知道MD5码原来的文字是什么。
当然MD5也是优缺点的加密相同的字符是结果都是相同的码,会出现撞库的风险。
# crypto 导入安装
对于nodejs 环境下
npm i crypto --save-dev
//js中引入
const crypto = require('crypto');
或者
import crypto from 'crypto';
封装一下 MD5 utils.js
const crypto = require('crypto');
/**
* hash方法
*
* @param {String} e.g.: 'md5', 'sha1'
* @param {String|Buffer} s
* @param {String} [format] 'hex','base64'. default is 'hex'.
* @return {String} 编码值
* @private
*/
const hash = (method, s, format) => {
var sum = crypto.createHash(method);
var isBuffer = Buffer.isBuffer(s);
if(!isBuffer && typeof s === 'object') {
s = JSON.stringify(sortObject(s));
}
sum.update(s, isBuffer ? 'binary' : 'utf8');
return sum.digest(format || 'hex');
};
/**
- md5 编码
- 3. @param {String|Buffer} s
- @param {String} [format] 'hex','base64'. default is 'hex'.
- @return {String} md5 hash string
- @public
*/
const md5 = (s, format) => {
return hash('md5', s, format);
};
module.exports = {
md5
};
MD5 加盐并且去除盐校验
江湖险恶为了防止撞库的梅超疯招式,我们登录时使用加盐的方式经登陆
## 用户注册时候 MD5 多次加密
md5(md5(用户名+ md5(密码))
多次加密,越多越好
//引入上述封装的utils.js
import utils from '../utils.js'
let name = 'abcd'
let password = '123'
let user_ticket = utils.md5(utils.md5(name + utils.md5(password)))
console.log(user_ticket) => 3a59492a85438a3a39a30fd0d8103ac5 //加密后的结果
登录密码MD5加盐
加盐的方式采用时间戳的方式,也可以采用其他方式越咸越好,然后在锅中来回翻炒
好了严规正传
同样采用MD5多次加密规格另外在加一 时间戳盐,登录的时候时间戳也要和其他参数一并传入后台,做解密处理
let name = 'abcd'
let password = '123'
var timestamp = Date.parse(new Date()) / 1000
let user_ticket = utils.md5(utils.md5(utils.md5(name + utils.md5(password))) + timestamp)
console.log(user_ticket) =>0b3298cb3c20b08318c185aec803a929 //加盐的结果
加盐解密
上述说到注册时采用MD5多次加密保存数据,登录时使用MD5多次加密在加盐
let name = 'abcd'
let password = '123'
var timestamp = Date.parse(new Date()) / 1000
let load_password = utils.md5(utils.md5(name + utils.md5(password))) //储存密码
let user_ticket_client = utils.md5(utils.md5(utils.md5(name + utils.md5(password))) + timestamp) //客户端密码
let user_ticket_service = utils.md5(load_password + timestamp) //服务端再次加密计算 储存密码加 时间戳
console.log(user_ticket_client == user_ticket_service) => true //客户端已经加密和服务端再次加密做对比
有人的地方就有江湖,江湖险恶没有绝对的安全系统,还有格式各样的加密方式,这次带我MD5拯救江湖,江湖有缘再见
openssl 加盐_nodejs-md5加盐到解密比对相关推荐
- 【项目】MD5加盐源码理解
1.shiro中主要的类 简单看一下即可,shiro是一个安全验证框架,相对Spring security使用更为简单.本篇文章使用的的md5加密和加盐是基于shiro框架. 复制代码 主要功能:认证 ...
- 对于AES和RSA算法的结合使用以及MD5加盐注册登录时的密码加密
RSA和AES结合使用 接上篇的RSA和AES算法加密之后,AES对称算法对数据量大的加密比较快,而RSA公私钥加密的话会影响加密效率,但是AES的加密与解密的密钥是一致的,导致密钥不能外泄,密钥在网 ...
- JAVA实现MD5带盐加密_MD5加盐加密
标签: package com.chauvet.utils; import java.security.NoSuchAlgorithmException; import java.util.Rando ...
- 一文读懂md5,md5有什么用,什么是md5加盐
md5是一种密码散列函数,在计算机安全领域得到广泛的应用.本文将带大家了解一些md5的知识点,什么是md5,md5有什么用,什么是md5加盐,为什么md5不可逆,为什么md5可能会被解密?帮助大家快速 ...
- md5加密,md5加盐加密和解密
package com.java.test;import java.security.MessageDigest; import java.security.SecureRandom; import ...
- 【甄选靶场】Vulnhub百个项目渗透——项目四十二:Moria1.1(MD5加盐爆破)
Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目四十二:Moria1.1(MD5加盐爆破)
- Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理
前言 在开发的时候,有一些敏感信息是不能直接通过明白直接保存到数据库的.最经典的就是密码了.如果直接把密码以明文的形式入库,不仅会泄露用户的隐私,对系统也是极其的不厉,这样做是非常危险的. 那么我们就 ...
- MD5流程以及安全性分析,MD5加盐,MD6,笔记
版权归其所有论文作者所有. 并没写原始的地址,因为这是我整合的,作者太多,包括我.太匆忙,原作者可以联系我. 简介 MD5适用于数据完整性校验的.将任意长度的字节串(所以是基于底层的二进制串的),映射 ...
- 密码MD5加盐加密----注册、校验、修改模块
思路: 单纯的MD5加密容易被碰撞破解,考虑将密码加上一个随机字符串(盐),再一同进行MD5加密,提高安全性. 此时,盐相当于另一半秘钥,需将盐一同存入数据库,用以验证. 实现过程: ...
- MD5加盐加密工具类(可直接使用)
MD5加盐加密工具类 在我们做项目时,涉及到用户密码,而正常来说数据库中不会直接存储明文的密码,都是加密之后的密码. 密码加密的方式有很多,比如: ① 3DES.AES.DES:使用对称加密算法,可以 ...
最新文章
- 问题一:云服务中那么多的服务器怎么拓扑???
- 完成users中的models
- linux 设置网络
- java 方法返回的值,java方法返回值问题
- java 多线程状态_总结Java中线程的状态及多线程的实现方式
- linux可以http安装么,Linux 5下 http的安装
- 《Ext JS权威指南》——2.4节关于Ext.onReady
- PairOfDice示例
- matlab keras,基于预训练的 Keras 层组合网络
- android充电器 充苹果,安卓充电器能给iPhone 12快充吗?实测小惊喜
- 10用户账户控制只有否_写了10 年的代码,收藏了这 20 个代码生成框架!
- 干货分享——安卓USB通信
- 新电视显示服务器失败,电视网络连接失败原因是什么
- 网络监控解决方案及拓扑图
- 什么是“懒加载”(Lazy Loading)?
- 《SMPLicit: Topology-aware Generative Model for Clothed People》论文解读
- 生物技术如何利用计算机思维,阿米巴,真正强大的生物计算机了解一下?
- 计算机专业基础综合哪个最难,10个考研最难的专业!你的专业排第几?
- R语言统计方法-我常用的
- Android 跳转到新浪微博
热门文章
- 推荐一款个人感觉比较舒服的idea主题
- CRNN原理详解、代码实现及BUG分析
- Python常用的第三方模块(python第三方库)
- 【Matlab系列】惩罚函数法(内点法、外点法)求解约束优化问题最优值 matlab
- java断点下载文件_java实现文件断点续传下载功能
- Pytorch简单使用MINIST数据集
- winform调用大华相机
- 内存测试_内存检测工具大全
- 批处理html转excel,批量Excel转TXT工具(Batch Excel to Text Converter)v2020.12.1118官方免费版...
- PyAudio模块的基本使用,阻塞式/非阻塞式地录制/播放音频