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

25.4.17学习总结

关于bcrypt算法

BCrypt 的主要特点和优点:

  • 加盐 (Salting): BCrypt 会自动为每个密码生成一个随机的盐值 (salt) 并将其与密码组合在一起,然后再进行哈希。 盐值是随机数据,用于防止彩虹表攻击。 这意味着即使两个用户使用相同的密码,他们的哈希值也会不同。

  • 慢哈希 (Slow Hashing): BCrypt 被设计成一个运算量大的哈希函数,需要更多的计算时间。 这种设计使得暴力破解(尝试所有可能的密码)变得非常耗时,从而提高了安全性。 这个 "慢" 是指相对于其他哈希算法,它是故意变慢的。

  • 自适应 (Adaptive): BCrypt 允许调整“成本因子”(也称为“轮数”)。 成本因子决定了哈希计算的复杂程度。 随着计算机硬件的改进,你可以增加成本因子以保持密码哈希的安全性。 成本因子越高,哈希计算所需的时间就越长,破解密码就越困难。

  • 单向性 (One-Way): BCrypt 是一种单向散列函数。这意味着从密码的哈希值反向推导出原始密码在计算上是不可行的。

工作原理:

  1. 生成盐值 (Salt): 当用户注册时,BCrypt 首先生成一个随机的盐值。

  2. 组合密码和盐值: BCrypt 将用户的密码与生成的盐值组合在一起。

  3. 哈希计算: BCrypt 对组合后的密码和盐值进行多次迭代的哈希运算,这个迭代次数由成本因子控制。

  4. 存储哈希值: 生成的哈希值(包含盐值信息)被存储在数据库中。

import org.mindrot.jbcrypt.BCrypt;public class EncryptSensitiveData {//bcrypt算法private static final int BCRYPT_ROUNDS = 12;public static String hashData(String Data) {return BCrypt.hashpw(Data, BCrypt.gensalt(BCRYPT_ROUNDS));}public static boolean checkData(String Data, String hashedData) {return BCrypt.checkpw(Data, hashedData);}
}

相关文章:

  • 多线程进阶知识篇(二)
  • CSDN创作四载记:我的创作纪念日随笔与感悟
  • SpringBoot整合Thymeleaf模板:构建现代化Web视图层的完整指南
  • 5G中LDPC编码之码块分段
  • C++入门小馆: C/C++内存管理
  • DAY 47 leetcode 232--栈与队列.用栈实现队列
  • 视频剪辑入门
  • iptables防火墙
  • 【C++初阶】第14课—缝合怪deque和优先队列、仿函数
  • AI在能源消耗管理及能源效率提升中的核心应用场景及技术实现
  • vllm 本地部署qwen2.5/Qwen2.5-32B-Instruct-AWQ模型
  • Crawl4AI:为大语言模型打造的开源网页数据采集工具
  • AI Agent系列(九) -Data Agent(数据分析智能体)
  • 【无人机】PX4飞控怎么烧写加载固件,更新固件方法,详细流程
  • seaborn库详解
  • pandas库详解
  • 【web服务_负载均衡Nginx】一、Nginx 基础与核心概念解析
  • 使用 reverse-sourcemap 工具反编译 Vue 项目
  • 如何通俗理解transformer架构
  • Vue中v-if和v-show区别
  • 巴基斯坦信德省卡拉奇发生爆炸
  • 化学家、台湾地区“中研院”原学术副院长陈长谦逝世
  • 2025江西跨境电子商务发展交流会召开,探索行业发展新趋势
  • 上海虹桥机场至北京首都机场快线试运行跨航司自愿签转服务
  • 俄军击落多架企图攻击莫斯科的无人机
  • 马丽称不会与沈腾终止合作,“他是我的恩人,也是我的贵人”