Blowfish加密算法是一种对称分组密码算法,其拥有加密速度快、紧凑、密钥长度可变等特点。而今天我们文章的主角则是基于Blowfish算法而来的BCrypt加密算法。
BCrypt算法简介
BCrypt算法是专门为密码存储而设计的算法,基于Blowfish加密算法变形而来,由Niels Provos和David Mazières发表于1999年的USENIX。
BCrypt算法一个非常重要的特征就是自适应性,可以保证加密的速度在一个特定的范围内,即使计算机的运算能力非常高,可以通过增加迭代次数的方式,使得加密速度变慢,从而可以抵御暴力搜索攻击,而且不会影响已有用户的登录。
BCrypt算法的加密原理
BCrypt算法可以看作是hash算法的变种,它使用“盐”来加密密码。盐是一个随机生成的字符串,可以在密码加密过程中使用,以确保每次加密结果都不同。BCrypt算法可以使用不同的“折叠”级别,即将多次hash迭代运算来增加安全性,从而创建一个更安全的加密字符串。
简单来理解就是BCrypt算法内部自己实现了随机加盐处理。使用Bcrypt,每次加密后的密文是不一样的。
虽然对同一个密码,每次生成的hash不一样,但是hash中包含了“盐”,在下次校验时,从hash中取出“盐”,“盐”跟password进行hash,得到的结果跟保存在DB中的hash进行比对。
BCrypt算法的优缺点
BCrypt算法在加密过程中可以实现不同的折叠级别,这让攻击者需要花费更长的时间来破解密码,因此可以有效保护用户的安全性。
此外,BCrypt还可以让用户在加密时输入自定义的“盐”,这可以进一步增加加密的安全性。
另外,BCrypt还可以使用不同的“折叠”级别,这让攻击者需要花费更多的时间来破解密码.
但是,高度的安全带来的问题就是性能的损失,因为它的复杂性,导致了每次计算的耗时远远大于普通的加盐hash算法。
BCrypt算法的安全性非常高,但其速度却比其他同类型算法慢上很多,所以在实际应用中并没有其他hash算法广泛,一般常用于保护安全要求极高的数据。
免责声明:素材源于网络,如有侵权,请联系删稿。