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

数据库密码加密

数据库密码加密

  • 添加jar包
  • 构建工具类
  • 具体使用
  • 优缺点

添加jar包

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId>
</dependency>

构建工具类

public class PasswordUtil {private static final BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();// 加密密码public static String encode(String rawPassword) {return encoder.encode(rawPassword);}// 校验密码(输入明文密码,与数据库密文比对)public static boolean matches(String rawPassword, String encodedPassword) {return encoder.matches(rawPassword, encodedPassword);}
}

具体使用

if (!PasswordUtil.matches(password, user.getPassword())) {throw new BusinessException(Code.PROJECT_BUSINESS_ERROR, "密码错误,请重新输入");
}

优缺点

优点:
抗彩虹表攻击:BCrypt 在加密时会自动生成随机盐值并嵌入到密文中,无需单独存储盐值,有效抵御彩虹表攻击。
计算资源消耗可配置:通过调整strength参数(默认 10),可以增加计算成本,抵御暴力破解。随着硬件性能提升,可适当提高强度。
自适应安全:BCrypt 算法内置了对未来计算能力增长的适应性设计,通过增加计算复杂度应对算力提升。
广泛使用与审计:BCrypt 是行业标准算法,被 OWASP 等安全组织推荐,代码经过大量安全审计。
防止时序攻击:matches方法使用固定时间比较算法,避免通过比较时间差异推测密码信息。
缺点:
计算开销大:高strength值会显著增加服务器负载,影响系统响应速度,尤其在高并发场景下需要权衡性能。
密文长度较长:BCrypt 生成的密文固定为 60 个字符,相比其他算法(如 Scrypt)占用更多存储空间。
不适合资源受限环境:在移动设备或嵌入式系统中,高强度加密可能导致不可接受的延迟。
算法演进限制:虽然目前安全,但长期来看无法像 Argon2 等新型算法那样灵活调整参数以应对量子计算等未来威胁。
密钥扩展能力较弱:对于需要处理短密码的场景,BCrypt 的密钥扩展机制不如专门设计的 KDF(如 PBKDF2)完善。

http://www.lqws.cn/news/97903.html

相关文章:

  • lanqiaoOJ 1508:N皇后问题 ← dfs
  • SpringBoot项目打包成war包
  • Kdump 介绍与使用方式
  • Samtec技术支持 | 新型评估和开发套件
  • Agno:使用简单代码构建AI智能体
  • 百万级临床试验数据库TrialPanorama发布!AI助力新药研发与临床评价迎来新基石
  • MySQL - Windows 中 MySQL 禁用开机自启,并在需要时手动启动
  • 编译 Linux openssl
  • Asp.net core 使用EntityFrame Work
  • 一、基础环境配置
  • Walle-Web:打造轻量级高效的DevOps自动化部署平台
  • 【数据库】《DBA实战手记》- 读书笔记
  • centos中的ulimit命令
  • Python数据分析及可视化中常用的6个库及函数(一)
  • 【JAVA版】意象CRM客户关系管理系统+uniapp全开源
  • python调用硅基流动的视觉语言模型
  • Python基于SVM技术的手写数字识别问题项目实战
  • Vue3 + Vite:我的 Qiankun 微前端主子应用实践指南
  • 研发型企业如何面对源代码保密问题
  • one-hot编码VS对象嵌入表示
  • Java详解LeetCode 热题 100(25):LeetCode 141. 环形链表(Linked List Cycle)详解
  • 架构设计的目标:高内聚、低耦合的本质
  • 【文献精读】Explaining grokking through circuit efficiency
  • Unity 性能优化终极指南 — GameObject 篇
  • SIFT算法详细原理与应用
  • WINDOWS 下查找指定端口的进程并解除端口占用
  • 实践深度学习:构建一个简单的图像分类器
  • LVS负载均衡
  • 【小红书】API接口,获取笔记核心数据
  • 《汇编语言》第14章 端口