当前位置: 首页 > news >正文

前端密码加密 —— bcrypt、MD5、SHA-256、盐

 🐔 前期回顾f8e3cc1a0f694ac2b665ca2ad14c49d7.png悄悄告诉你:前端如何获取本机IP,轻松一步开启网络探秘之旅_彩色之外的博客-CSDN博客前端获取 本机 IP 教程https://blog.csdn.net/m0_57904695/article/details/131855907?spm=1001.2014.3001.5501

          在前端密码加密方案中,bcrypt与SHA-256都是常见的加密算法,它们各有优劣。

首先,bcrypt是一种专门用于密码哈希的算法,并且包含了自带的盐。它使用Salt和Cost参数来控制哈希的复杂程度。bcrypt的主要优点是它的计算成本可调节,可以增加破解密码的难度。这意味着即使密码遭到泄露,攻击者也需要花费很长时间和大量计算资源进行破解。因此,bcrypt常常被认为是一种更安全的密码哈希算法。

           其次,SHA-256是一种常用的加密散列函数,广泛应用于密码学和数据完整性验证领域。与bcrypt不同,SHA-256并不自带盐,因此你需要自行生成和存储盐值。SHA-256的计算速度相对较快,但不具备计算成本调节的功能。这意味着,如果密码遭到泄露,攻击者可以使用现代硬件和技术快速破解较弱的密码。

         综上所述,如果你关注密码的安全性,推荐使用bcrypt作为密码加密算法。bcrypt自带盐,并且计算成本可调节,能有效增加破解密码的难度。对于bcrypt来说,你不需要自行生成盐值,它会在哈希过程中自动处理。

        然而,在前端密码加密方案中,加密只是整个安全体系的一部分。你还需要考虑其他方面的安全性,比如传输的加密、防止XSS攻击、账号锁定等等。因此,在设计密码加密方案时,请综合考虑所有安全要素,并遵循最佳实践。

   

    安全性不仅取决于哈希算法本身,还取决于其使用方式和上下文。

目录

😷 MD5

🛹 SHA-256 + 盐值

🤖 源码位置

🌍 bcrypt (推荐)

😷  谢谢观看


😷 MD5

        MD5是一种广泛用于数据校验和加密的算法。它接受一个输入(通常是消息或数据)并生成一个128位(16字节)的哈希值作为输出。

MD5算法通过将输入数据分成固定大小的块,并对每个块进行一系列的运算来生成哈希值。生成的哈希值具有以下特点:

1. 不可逆性:无法从哈希值反推出原始输入数据。


2. 相同输入生成相同哈希值:对于相同的输入数据,无论执行多少次,都会生成相同的哈希值。


3. 哈希冲突可能性:不同的输入数据可能会生成相同的哈希值,这称为哈希冲突。

        由于MD5算法存在一些安全漏洞,例如容易被碰撞攻击和预映像攻击,因此不再推荐用于安全敏感的应用。在需要更高级别的数据安全性时,推荐使用更强大和安全性更高的哈希算法,如SHA-256、SHA-512等。

🛹 SHA-256 + 盐值

        SHA-256(Secure Hash Algorithm 256-bit)是一种密码学安全散列函数,它接受任意长度的输入数据,并生成一个256位(32字节)的哈希值作为输出。

       SHA-256是SHA-2系列中的一种算法,是SHA-224和SHA-512之间的中间版本。它是由美国国家安全局(NSA)设计,广泛应用于数据完整性校验、数字签名、密码学协议等领域。

       与MD5相比,SHA-256提供了更高的安全性和更好的抗碰撞能力。它具有以下特点:

1. 不可逆性:无法从哈希值反推出原始输入数据。


2. 相同输入生成相同哈希值:对于相同的输入数据,无论执行多少次,都会生成相同的哈希值。


3. 哈希冲突可能性极低:不同的输入数据生成相同哈希值的可能性极低,可以被认为是可以忽略不计的。

       SHA-256广泛应用于密码学和信息安全领域,例如在数字证书、SSL/TLS握手过程、密码存储和验证等方面。它提供了更强大的数据完整性保护和安全性,是目前常用的哈希算法之一。

          加盐是指在密码哈希过程中引入一个随机生成的字符串,称为盐(salt),并将其与密码进行组合后再进行哈希计算。这个盐值会与每个用户的密码单独关联,并且将其存储在数据库中。 加盐可以增加密码哈希的复杂度,提高密码的安全性,即使两个用户使用相同的密码,由于使用了不同的盐值,其哈希结果也会有所区别。这样即使黑客获得了哈希值,也很难通过暴力破解找到原始的密码。

1:首先,安装 js-sha256库: 

pnpm install js-sha256

2:在您的Vue组件中引入js-sha256 

import { sha256 } from 'js-sha256';

3:在需要使用SHA256哈希的地方,调用 sha256 函数并加盐,传入要哈希的字符串作为输入:

import { sha256 } from 'js-sha256';const generateSalt = () => {const randomBytes = new Uint8Array(16);crypto.getRandomValues(randomBytes);return Array.from(randomBytes, (byte) =>byte.toString(16).padStart(2, '0')).join('');
};const salt = generateSalt();
console.log('!这里输出 🚀 ==>:', salt);const password = 'userPassword';
const saltedPassword = salt + password;
const hashedPassword = sha256(saltedPassword);
console.log('!这里输出 🚀 ==>:', hashedPassword);

可以将其用作数据验证、密码存储等用途,关于安全性,除了使用 js-sha256 库之外,还建议采取以下措施:

  • 使用HTTPS协议来保护传输数据的安全性。
  • 在前端进行输入验证和过滤,以确保只有有效和合法的数据被传递给哈希函数。
  • 对于密码存储和认证,最好使用专门的密码哈希函数和密码学方案,如bcrypt、scrypt或Argon2等。
  • 仔细保护密钥和敏感数据,避免将它们明文存储在前端代码或客户端浏览器中。

 SHA256哈希函数本身并不能防止所有安全问题,还需要综合考虑其他因素来确保系统的安全性,如合理的安全策略、用户身份验证和授权等。

🤖 源码位置

🌍 bcrypt (推荐)

pnpm install bcrypt

请确认您使用的 NodeJS 版本是稳定版本;目前不支持不稳定版本,使用不稳定版本时创建的问题将被关闭。

请至少升级到 v5.0.0  bcrypt依赖

import bcrypt from 'bcrypt';/*** 生成哈希密码* @param myPlaintextPassword 明文密码* @param saltRounds 盐值生成的轮数,默认为10* @returns 哈希密码*/
export const returnBcrypt = (myPlaintextPassword: string, saltRounds?: number): string => {// 技术 1(在单独的函数调用上生成盐和哈希):// const salt = bcrypt.genSaltSync(saltRounds);// const hash = bcrypt.hashSync(myPlaintextPassword, salt);// 技术 2(自动生成盐和哈希):const hash = bcrypt.hashSync(myPlaintextPassword, saltRounds);return hash;
};

 🤖 源码位置

 

😷  谢谢观看

7730e2bd39d64179909767e1967da702.jpeg

 _______________________________  期待再见  _______________________________

相关文章:

前端密码加密 —— bcrypt、MD5、SHA-256、盐

🐔 前期回顾悄悄告诉你:前端如何获取本机IP,轻松一步开启网络探秘之旅_彩色之外的博客-CSDN博客前端获取 本机 IP 教程https://blog.csdn.net/m0_57904695/article/details/131855907?spm1001.2014.3001.5501 在前端密码加密方案中&#xff…...

汽车UDS诊断深度学习专栏

1.英文术语 英文术语翻译Diagnostic诊断Onboard Diagnostic 在线诊断 Offboard Diagnostic离线诊断Unified diagnostic service简称 UDS 2.缩写表 缩写解释ISO国际标准化组织UDSUnified diagnostic service,统一的诊断服务ECU电控单元DTC 诊断故障码 ISO14229UD…...

macOS 下安装brew、nvm

1、brew: /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" brew -v 查看版本 示例: 安装jdk brew search jdk 查询可用的jdk版本 brew install openjdk11 安装制定版本jdk 更换源&#xff1…...

【云原生】Kubernetes工作负载-StatefulSet

StatefulSet StatefulSet 是用来管理有状态应用的工作负载 API 对象 StatefulSet 用来管理某 Pod 集合的部署和扩缩, 并为这些 Pod 提供持久存储和持久标识符 和 Deployment 类似, StatefulSet 管理基于相同容器规约的一组 Pod。但和 Deployment 不同…...

Java:方法的重载

方法重载 为什么需要方法重载 在使用方法的过程中我们可能会遇到以下如同例子的情形: ​ ​ public class method1 {public static void main(String[] args) {int a1 10;int b1 20;double ret1 add(a1, b1);System.out.println("ret1 " ret1);do…...

7.react useCallback与useMemo函数使用与常见问题

react useCallback与useMemo函数使用与常见问题 useCallback返回一个可记忆的函数,useMemo返回一个可记忆的值,useCallback只是useMemo的一种特殊形式。 那么这到底是什么意思呢?实际上我们在父子通信的时候,有可能传递的值是一…...

Sentinel限流中间件

目录 介绍 Sentinel 的特征 Sentinel 的组成 实战使用 简单实例 配置本地控制台 使用可视化ui配置简单流控 配置异步任务限流 使用注解定义限流资源 SpringCloud整合Sentinel 简单整合 并发线程流控 关联模式 整合openFeign使用 介绍 随着微服务的流行&#xff0…...

使用ajax进行前后端交互的方法

使用ajax进行前后端交互的方法:(我只测试通了json对象作为参数的方式,其他方式我没有测试通过) 1、前端方法: 传参方式:POST 请求类型:json对象 响应类型:json对象 function test() …...

动手学深度学习——线性回归从零开始

生成数据集synthetic_data()读取数据集data_iter()初始化模型参数w, b定义模型:线性回归模型linreg()定义损失函数:均方损失squared_loss()定义优化算法:梯度下降sgd()进行训练:输出损失loss和估计误差 %matplotlib inline impor…...

Redis缓存击穿

Redis缓存击穿是指在使用Redis作为缓存时,某个热点数据过期或不存在,导致大量请求直接打到后端存储系统(例如数据库),使得后端系统压力骤增,性能下降的情况。这种情况通常发生在热点数据失效的瞬间。 缓存…...

网络安全(黑客)自学的一些建议

1.选择方向 首先是选择方向的问题,网络安全是一个很宽泛的专业,包含的方向特别多。比如 web安全,系统安全,无线安全 ,二进制安全,运维安全,渗透测试,软件安全,IOT安全&a…...

全志F1C200S嵌入式驱动开发(基于usb otg的spi-nor镜像烧入)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 前面既然已经搞定了spi-nor驱动,那么下一步考虑的就是怎么从spi-nor flash上面加载uboot、kernel和rootfs。目前spi-nor就是一块白片,上面肯定什么都没有,那么这个时候,我们要做…...

如何恢复损坏/删除的 Word 文件

有关如何修复不可读的 Microsoft Word 文件或 Rich Text 文件中的文本的分步说明。这些说明有助于从损坏的*.doc、*.docx、*.dot、*.dotx、*.rtf文件(任何版本和大小)中提取文本,只需单击几下: 从此处下载奇客数据恢复 &#xff…...

【论文阅读】Feature Inference Attack on Shapley Values

摘要 研究背景 近年来,解释性机器学习逐渐成为一个热门的研究领域。解释性机器学习可以帮助我们理解机器学习模型是如何进行预测的,它可以提高模型的可信度和可解释性。Shapley值是一种解释机器学习模型预测结果的方法,它可以计算每个特征对…...

TDesign 中后台系统搭建

目录 1 模板安装2 启动项目3 添加页面总结 一般如果希望开发小程序,是要给使用的用户提供一套中后台系统来管理数据的。现在中后台系统开源项目也比较多,本篇我们介绍一个腾讯开源的TDesign模板。 1 模板安装 先要在电脑里安装好nodejs,搜索…...

Android 实现阅读用户协议的文字控件效果

开发中&#xff0c;经常要用到一些阅读隐私协议的场景&#xff0c;原生的textview控件很难做到在一个控件里有两个点击事件&#xff0c;那现在就来安利一个强大的组件——SpannableStringBuilder。 先看看效果&#xff1a; 直接上代码&#xff0c;布局文件&#xff1a; <Li…...

19.主题时钟

主题时钟 html部分 <div class"btn">黑色</div><div class"clock-container"><div class"time">21</div><div class"date">21</div><div class"clock"><div class&qu…...

ChatGPT在智能电子设备中的应用如何?

ChatGPT在智能电子设备中有着广泛的应用潜力&#xff0c;可以为电子设备提供更智能、更个性化的用户体验&#xff0c;并为用户提供更多便利和高效的功能和服务。智能电子设备是指通过集成计算机、传感器、网络和人工智能等技术&#xff0c;实现智能化的功能和交互的设备。ChatG…...

MGRE之OSPF实验

目录 题目&#xff1a; 步骤二&#xff1a;拓扑设计与地址规划​编辑 步骤三&#xff1a;IP地址配置 步骤四&#xff1a;缺省路由配置 步骤五&#xff1a;NAT的配置 步骤六&#xff1a;MGRE配置 中心站点R1配置 分支站点配置 中心站点R5 R1配置 分支站点配置 检测&…...

【Selenium+Pytest+allure报告生成自动化测试框架】附带项目源码和项目部署文档

目录 前言 【文章末尾给大家留下了大量的福利】 测试框架简介 首先管理时间 添加配置文件 conf.py config.ini 读取配置文件 记录操作日志 简单理解POM模型 简单学习元素定位 管理页面元素 封装Selenium基类 创建页面对象 简单了解Pytest pytest.ini 编写测试…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...