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加盐到解密比对相关推荐

  1. 【项目】MD5加盐源码理解

    1.shiro中主要的类 简单看一下即可,shiro是一个安全验证框架,相对Spring security使用更为简单.本篇文章使用的的md5加密和加盐是基于shiro框架. 复制代码 主要功能:认证 ...

  2. 对于AES和RSA算法的结合使用以及MD5加盐注册登录时的密码加密

    RSA和AES结合使用 接上篇的RSA和AES算法加密之后,AES对称算法对数据量大的加密比较快,而RSA公私钥加密的话会影响加密效率,但是AES的加密与解密的密钥是一致的,导致密钥不能外泄,密钥在网 ...

  3. JAVA实现MD5带盐加密_MD5加盐加密

    标签: package com.chauvet.utils; import java.security.NoSuchAlgorithmException; import java.util.Rando ...

  4. 一文读懂md5,md5有什么用,什么是md5加盐

    md5是一种密码散列函数,在计算机安全领域得到广泛的应用.本文将带大家了解一些md5的知识点,什么是md5,md5有什么用,什么是md5加盐,为什么md5不可逆,为什么md5可能会被解密?帮助大家快速 ...

  5. md5加密,md5加盐加密和解密

    package com.java.test;import java.security.MessageDigest; import java.security.SecureRandom; import ...

  6. 【甄选靶场】Vulnhub百个项目渗透——项目四十二:Moria1.1(MD5加盐爆破)

    Vulnhub百个项目渗透 Vulnhub百个项目渗透--项目四十二:Moria1.1(MD5加盐爆破)

  7. Java使用MD5加盐对密码进行加密处理,附注册和登录加密解密处理

    前言 在开发的时候,有一些敏感信息是不能直接通过明白直接保存到数据库的.最经典的就是密码了.如果直接把密码以明文的形式入库,不仅会泄露用户的隐私,对系统也是极其的不厉,这样做是非常危险的. 那么我们就 ...

  8. MD5流程以及安全性分析,MD5加盐,MD6,笔记

    版权归其所有论文作者所有. 并没写原始的地址,因为这是我整合的,作者太多,包括我.太匆忙,原作者可以联系我. 简介 MD5适用于数据完整性校验的.将任意长度的字节串(所以是基于底层的二进制串的),映射 ...

  9. 密码MD5加盐加密----注册、校验、修改模块

    思路:     单纯的MD5加密容易被碰撞破解,考虑将密码加上一个随机字符串(盐),再一同进行MD5加密,提高安全性. 此时,盐相当于另一半秘钥,需将盐一同存入数据库,用以验证. 实现过程:      ...

  10. MD5加盐加密工具类(可直接使用)

    MD5加盐加密工具类 在我们做项目时,涉及到用户密码,而正常来说数据库中不会直接存储明文的密码,都是加密之后的密码. 密码加密的方式有很多,比如: ① 3DES.AES.DES:使用对称加密算法,可以 ...

最新文章

  1. 问题一:云服务中那么多的服务器怎么拓扑???
  2. 完成users中的models
  3. linux 设置网络
  4. java 方法返回的值,java方法返回值问题
  5. java 多线程状态_总结Java中线程的状态及多线程的实现方式
  6. linux可以http安装么,Linux 5下 http的安装
  7. 《Ext JS权威指南》——2.4节关于Ext.onReady
  8. PairOfDice示例
  9. matlab keras,基于预训练的 Keras 层组合网络
  10. android充电器 充苹果,安卓充电器能给iPhone 12快充吗?实测小惊喜
  11. 10用户账户控制只有否_写了10 年的代码,收藏了这 20 个代码生成框架!
  12. 干货分享——安卓USB通信
  13. 新电视显示服务器失败,电视网络连接失败原因是什么
  14. 网络监控解决方案及拓扑图
  15. 什么是“懒加载”(Lazy Loading)?
  16. 《SMPLicit: Topology-aware Generative Model for Clothed People》论文解读
  17. 生物技术如何利用计算机思维,阿米巴,真正强大的生物计算机了解一下?
  18. 计算机专业基础综合哪个最难,10个考研最难的专业!你的专业排第几?
  19. R语言统计方法-我常用的
  20. Android 跳转到新浪微博

热门文章

  1. 推荐一款个人感觉比较舒服的idea主题
  2. CRNN原理详解、代码实现及BUG分析
  3. Python常用的第三方模块(python第三方库)
  4. 【Matlab系列】惩罚函数法(内点法、外点法)求解约束优化问题最优值 matlab
  5. java断点下载文件_java实现文件断点续传下载功能
  6. Pytorch简单使用MINIST数据集
  7. winform调用大华相机
  8. 内存测试_内存检测工具大全
  9. 批处理html转excel,批量Excel转TXT工具(Batch Excel to Text Converter)v2020.12.1118官方免费版...
  10. PyAudio模块的基本使用,阻塞式/非阻塞式地录制/播放音频