一、背景
获取了gitlab的git权限后,可通过gitlab-rails console进入控制台,对gitlab的数据库进行读写操作,面临一个很棘手的问题就是,数据库中的用户密码均采用了bcrypt加密算法,通常情况下,知名的cmd5都难以解密获取原明文密码。bcrypt作为一种专为密码存储设计的哈希函数,它结合使用了盐值、工作因子和Blowfish算法,使得其在防御彩虹表攻击和暴力破解方面表现出色。通过独特的哈希机制,bcrypt能够确保密码的安全性,有效防止潜在的安全威胁。
二、算法起源
该算法由Niels Provos和David Mazières共同设计,其灵感来源于Blowfish密码算法。该函数在1999年的USENIX会议上被正式提出,自那时起便因其独特性和安全性而备受关注。bcrypt 的设计初衷是为了保护存储在数据库中的密码免受攻击,提供一种更加强大、可靠的密码散列方式,以防止暴力破解和彩虹表攻击等常见密码攻击手段。
三、原理
生成盐——>>设置工作因子——>>组合密码和盐——>>扩展密钥——>>生成哈希值——>>校验密码
对密码进行哈希处理时,bcrypt算法首先会生成一个随机的盐值。这个盐值是一个足够长的随机数,通常为128位&