【算法】bcrypt加密算法学习

BCrypt入门 开发工具与关键技术:IntelliJ IDEA java 作者:木林森 撰写时间:2021年4月27日 在用户模块,对于用户密码的保护,通常都会进行加密然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否正确。目前,MD5和BCrypt比较流行。 BCrypt是单向Hash加密算法,一般用于密码加密,相对来说,BCrypt比MD5更安全 ,但是MD5加密会更快速。 MD5是一种可反向破解的密码加密,如果你的密文被截获它就可以在MD5在线解 阅读详情

应用场景

今天在看架构师的源码的时候发现了bcrypt这个加密算法,发现这个是放在权限包中,和用户的登录时密码的加密检查有关,所以查看了相关的资料了解一下这个算法。

以前自己写用户的登录时,密码的加密使用的是 salt+md5 的方式。salt是自己定制的一个规则针对不同的用户生成,如用户注册的当前时间加上指定的字符串然后进行hash生成。校验密码就是获取到用户的注册时间重新进行一边加密,检查两个加密后的字符串是否一致。

今天看资料的时候,说是 salt+md5 的方式安全级别也是不够的,通过scrypt可以增加破解难度。其实我觉得一般的场景 salt+md5 的方式也足够了。我其实是觉得这个加密包做的足够安全和傻瓜式,方便实用。

使用

  1. 导入jbcrypt包
<!-- https://mvnrepository.com/artifact/org.mindrot/jbcrypt -->
<dependency>
    <groupId>org.mindrot</groupId>
    <artifactId>jbcrypt</artifactId>
    <version>0.4</version>
</dependency>
  1. 使用主要的方法
import org.mindrot.jbcrypt.BCrypt;

public class BcryptTest {

    public static void main(String[] args) {
        //准备测试的密码
        String pwd = "test1";
        //获取salt,参数不能大于30
        String salt = BCrypt.gensalt(10);
        System.out.println("salt:" + salt);
        //经过加密后的字符串
        String hashed = BCrypt.hashpw(pwd, salt);
        System.out.println("hashed:" + hashed);
        //检查是否一致的
        System.out.println("is match:" + BCrypt.checkpw("test1", hashed));
    }

}

输出结果:

salt:$2a$10$203TpDwkZ8VzBlFYX3f0Ze
hashed:$2a$10$203TpDwkZ8VzBlFYX3f0ZeivU.eqR6AE5KcEGG2TQG.Cj30UmHGcC
is match:true

TODO

后续有深入的思考再补充吧

bcrypt加密算法 前言 我在公司内部做了一个“接口管理系统”(DRIM),这个系统的用户认证需要与公司已有的代码管理平台gitlab保持一致,采用的方式是DRIM直接读gitlab的数据库来做认证,所以需要知道gitlab是如何对密码做加密的。 过程 1.寻找数据库 这个过程很简单,很快就找到了其users表,里面有 encrypted_password一列,用来展示密码加密后的字符串。 2.寻找加密算法 阅读详情

相关推荐

加密算法bcrypt的使用

bcrypt说明   bcrypt是一种加盐的加密方法,每次加密的时候会先生成一个随机数,之后将这个随机数与密码进行hash,形成密文。 bcrypt与MD5的区别   MD5加密算法同一个密码加密后的密文是一样的,这样很容易被破解;bcrypt加密算法同一个密码加密之后的密文是不一样的,相对来说更加安全一些。 bcrypt使用 bcrypt依赖的其他环境   1.python 2   2.nod...

愿历尽千帆,仍保持最初的热爱,奔赴每一场山海,一如既往鲜活而明亮~ 1844

最安全的加密算法 Bcrypt,再也不用担心数据泄密了~

大家好,我是不才陈某~这是《Spring Security 进阶》专栏的第三篇文章,给大家介绍一下Spring Security 中内置的加密算法BCrypt,号称最安全的加密算法,究竟有着什么魔力能让黑客闻风丧胆往期文章如下:HttpBasic 认证模式活该被放弃手摸手教你定制 Spring Security 表单登录当然还有OAuth2.0相关的集成,看《Spring Cloud 进阶》这个专...

码猿技术专栏 2444

Spring Security 让后端系统的安全管理更高效

A:配置formLogin().loginPage(“/custom-login”)

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 831

密码加密技术—BCrypt

BCrypt是一种跨平台的文件加密工具,使用的是布鲁斯·施内尔在1993年发布的 Blowfish 加密算法。它是一种可生成随机盐值的单向Hash加密算法,Hash值中包含了上一步生成的盐值(22个字符)的不可逆加密算法。同一种明文,每次被加密后的密文都不一样,并且不可反向破解生成明文,破解难度非常大。BCrypt加密后的密文结构如下图所示:其中密文结构为:$是分割符, 2y是BCrypt加密版本号,10是cost的值,紧随其后的前22位是盐值(salt),最后的字符串就是密码的密文了。

A1309673777的博客 4235

bcrypt库C/C++使用

bcrypt库C/C++使用 ```cpp #include "bcrypt/BCrypt.hpp" #include <iostream> int main(){ std::string password = "123456"; //此函数用于生成hash字符串 std::string hash = BCrypt::generateHash(password); //用于判断密码和数据库password加密后的字符串是否匹配 std::cout << BCrypt::validatePassword(password,hash) << std::endl; std::cout << BCrypt::validatePassword("123456",hash) << std::endl; return 0; } ```

二阶高通滤波器硬件设计:5种RC到有源方案对比与选型

在传感器前端和音频信号调理中,二阶高通滤波器是抑制直流偏移与低频干扰的关键模块。其设计核心围绕截止频率、品质因数Q、增益与噪声四个指标展开,其中Q值决定滤波器在转折频率附近的响应形状,如Butterworth最大平坦响应需Q=0.707。从纯无源RC电路到引入运放的有源拓扑,演变逻辑在于解决负载效应、提供增益并借助反馈提升Q值。实际工程中,RC级联、VCVS(Sallen-Key)、状态变量及回转器模拟电感等方案各有适用场景:RC电路简单但Q值受限,Sallen-Key单运放即可实现高Q,状态变量适合Q值独

weixin_32770423的博客 98

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

bcrypt、MD5、SHA-256、盐

技术前端,忠于热爱 @0.活在风浪里 1万+

【加密社】私钥碰撞器,秒杀市面上的碰撞器

基于上述的逻辑和代码,开发了ETH挖掘器(图1.1)这里有个亮点是:1.很多开发者在判断地址是否有效的环节上,用的是查询余额,其实这是不对的,查询余额你可能只能查询对应代币的余额,例如usdt,eth等但是如果用查询交易次数就不一样了,你只要是交易过,我就认为是有效钱包,这样的速度比查询余额要快,也要更准确。2.rpc节点可配置。

加密社的博客 1577

MD5加密算法和BCrypt密码加密算法

本文对比分析了MD5与bcrypt两种常见的密码加密算法。MD5由于计算速度快且缺乏足够的安全性,已经逐渐被弃用,尤其在密码存储领域。相对而言,bcrypt算法通过加盐和多次迭代机制,显著提高了密码的抗破解能力,适合用于高安全性要求的场景。文章详细探讨了两者的工作原理、优缺点以及实际应用中的安全性表现,以供读者按照需求来使用这两种加密算法。

m0_65100923的博客 3632

别再对着手册发愁了!手把手教你读懂MIPI-DSI初始化命令(以Rockchip平台为例)

本文深入解析MIPI-DSI初始化命令在Rockchip平台的应用,帮助嵌入式工程师快速掌握LCD屏幕调试技巧。从协议基础到实战指南,详细拆解命令格式、DCS与Generic命令的区别,并提供Rockchip平台的调试全流程与高级技巧,解决常见显示问题。

weixin_42519781的博客 262

C# 原生数字孪生的尝试

本文介绍了使用C#实现数字孪生的基本思路。首先从爱普生官网下载机器人3D模型,然后通过Blender创建并导出带动画的FBX模型。在WPF项目中,使用HelixToolkit.SharpDX等插件加载模型,通过Viewport3DX进行3D渲染。关键点是通过动画控制器接收真实设备信号来驱动模型动画,实现物理实体与虚拟模型的同步。文中提供了完整的代码实现,包括模型导入、动画播放控制等核心功能。该方法为构建数字孪生系统提供了一种可行的技术方案。

qq_33529095的博客 1330

最安全的Hash算法-Bcrypt原理及示例

bcrypt的盐值是一个随机生成的字符串,与密码一起用于哈希函数中,使得相同的密码在每次加密时都会生成不同的哈希值。该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。到此为止,大概2个月的时间。

2401_85773741的博客 3418

使用Intel编译器编译OpenFOAM

本文总结了使用INTEL编译器编译OpenFOAM的过程

姜蜉蝣的博客 1546

哈希加密bcrypt 和 cookie和session 和 joi 和 formidable 和 FileReader

后记总结一下这三次面试下来我的经验是:一定不要死记硬背,要理解原理,否则面试官一深入就会露馅!代码能力一定要注重,尤其是很多原理性的代码(之前两次让我写过Node中间件,Promise.all,双向绑定原理,被虐的怀疑人生)!尽量从面试官的问题中表现自己知识的深度与广度,让面试官发现你的闪光点!多刷面经!

2401_84150154的博客 848

OCR开发实战:如何用PaddleOCR C++版实现本地文字识别(附模型文件处理技巧)

本文详细介绍了如何使用PaddleOCR C++版实现本地文字识别,包括环境搭建、工程编译、运行时优化等全流程。重点讲解了在VS2019/VS2022环境下配置PaddleOCR的CPU推理性能优化技巧,以及模型文件处理的实际应用方法,帮助开发者高效完成OCR本地化部署。

devops8pract的博客 334

GameFramework教程✨六、怎样加载一个3D UI

怎样加载一个3D UI

星河造梦坊 1583

用户登录功能:说简单也困难

用户登录说起来只是一个很普通的功能,不过它的逻辑一点也不简单。因为登录过程要对个人的信息进行对比验证,验证过程中又要调用相应的加密算法,而加密算法是对性能要求很高的一种功能。复杂的加密算法安全性高,但性能就差;不复杂的加密算法性能好,但安全性高,这是一个取舍的问题。按照测试方案的基准场景的设计步骤,先压测这个接口的基准场景。

qq_53058639的博客 524

华为OD机试真题 Java&Go 实现【优雅子数组】【100%通过率】【2022.11 Q4 新题】

如果一个数组中出现次数最多的元素出现大于等于K次,被称为K -优雅数组,k也可以被称为优雅阈值。例如,数组1,2,3,1、2,3,1,它是一个3-优雅数组,因为元素1出现次数大于等于3次,数组1,2,3,1,2就不是一个3-优雅数组,因为其中出现次数最多的元素是1和2,只出现了2次。给定一个数组A和k,请求出A有多少子数组是k-优雅子数组。

MISAYAONE的博客 1万+

太强了!基于深度学习的文本自动解密算法。

遇到基础加密和编码的场景,不妨试试这个,基于深度学习的文本自动解密 Ciphey 算法。

Jack-Cui 5764

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JAVA常用加密方式介绍及使用汇总(全集)

引文:如果开发者需要保存密码(比如网站用户的密码),要考虑如何保护这些密码数据,网站用户密码的泄露是一件非常严重的事情,容易引起用户恐慌,所以在安全方面是重中之重,直接将密码以明文写入数据库中是极不安全的,因为任何可以打开数据库的人,都将可以直接看到这些密码。解决的办法是将密码加密后再存储进数据库,比较常用的加密方法是使用哈希函数(Hash Function),也就是摘要加密。通过哈希函数,我们就可以将密码的哈希值存储进数据库。

dzqxwzoe的博客 5920

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

2024年最全最安全的Hash算法-Bcrypt原理及示例_bcrypt算法原理,2024年最新2024网络安全春招面试经历

本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!

2401_84545747的博客 977

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SHA-512哈希算法详解:从核心原理到实战应用与安全误区

哈希函数是现代密码学和数据安全的基石,其核心原理是将任意长度的输入数据通过确定的数学运算,转换为固定长度的“数字指纹”。这种单向、抗碰撞的特性,使其在保障数据完整性、实现身份认证和构建数字签名等场景中不可或缺。SHA-512作为SHA-2家族的重要成员,凭借其512位的输出长度和精密的混淆扩散设计,提供了极高的抗碰撞能力,至今仍是TLS/SSL、区块链(如比特币的SHA-256是其变体)等关键系统的底层支撑。在工程实践中,理解其与bcrypt等密码哈希函数的区别至关重要,避免将其误用于密码存储等安全敏感场景

weixin_34239169的博客 359

最新最安全的Hash算法-Bcrypt原理及示例_bcrypt算法原理(2),2024年最新来看看这份超全面的《网络安全面试题及解析》

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!【完整版领取方式在文末!!内容实在太多,不一一截图了。

2401_84302507的博客 420

算法高级(22)-BCrypt加密算法,号称目前最安全的算法之一

一、哈希(Hash)与加密(Encrypt) 哈希(Hash)是将目标文本转换成具有相同长度的、不可逆的杂凑字符串(或叫做消息摘要),而加密(Encrypt)是将目标文本转换成具有不同长度的、可逆的密文。 哈希算法往往被设计成生成具有相同长度的文本,而加密算法生成的文本长度与明文本身的长度有关。 哈希算法是不可逆的,而加密算法是可逆的。 HASH 算法是一种消息摘要算法,不是一种加密算法,但...

十步杀一人-千里不留行 1万+

Bcrypt 加密算法研究与对比

Bcrypt 加密算法研究与对比一、什么是Bcrypt二、Bcrypt如何加密与验证?(一)encode方法加密:(二)matches方法验证:三、如果使用彩虹表进行hash碰撞攻击会如何?四、比较MD5加密算法的缺陷:相对于MD5,Bcrypt加密算法的特点:各种加密算法的比较参考:五、数据库迁移是否有问题? 一、什么是Bcrypt 1、bcrypt,是一个跨平台的文件加密工具。由它加密的文件可在所有支持的操作系统和处理器上进行转移。它的口令必须是8至56个字符,并将在内部被转化为448位的密钥。 2、B

x2hg123的博客 3015
上一篇: 【算法】snowflake算法学习
下一篇: 【安全】公钥和私钥的理解学习
ColdFireMan
博客等级 码龄10年 27粉丝 112原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值