前言
我在公司内部做了一个“接口管理系统”(DRIM),这个系统的用户认证需要与公司已有的代码管理平台gitlab保持一致,采用的方式是DRIM直接读gitlab的数据库来做认证,所以需要知道gitlab是如何对密码做加密的。
过程
1.寻找数据库
这个过程很简单,很快就找到了其users表,里面有 encrypted_password一列,用来展示密码加密后的字符串。
2.寻找加密算法
虽然已经找到了密文的字符串,但ta并不是一般的sha1/md5之流,所以在gitlabhq@github上狂找,狂搜代码,妄想着能找到诸如user.login($username, $userpasswd)的函数实现,但一个都小时毫无收获。
后来google到一个网页说的是devise用什么加密算法,devise我在源码里见过很多次,而且其一定是跟认证有关的。遂继续看devise,原来ta是RoR的一个用户认证组件,很容易集成到RoR应用中,来相当完美+简单得解决用户认证(对每个系统而言,用户认证的流程基本一样,这也是devise作为独立组件的意义)。
devise组件默认使用bcrypt作为加密算法,也支持sha512、md5这种简单的摘要算法。gitlab就使用默认的bcrypt作为密码的加密算法。
深入理解bcrypt加密算法

本文介绍了bcrypt加密算法的原理和使用,特别是在RoR中的应用。bcrypt通过salt和cost增加加密复杂度,提供更高的安全性,避免彩虹表攻击。文章提到了在Python中使用bcrypt库的方法,强调其与MD5相比的加密速度差异以及推荐的cost值。
最低0.47元/天 解锁文章
1429

被折叠的 条评论
为什么被折叠?



