在用户模块,对于用户密码的保护,通常都会进行加密。我们通常对密码进行加密,然后存放在数据库中,在用户进行登录的时候,将其输入的密码进行加密然后与数据库中存放的密文进行比较,以验证用户密码是否正确。 目前,MD5和BCrypt比较流行。相对来说,BCrypt比MD5更安全。因为其内部引入的加盐机制。
什么是盐?
盐是一个随机生成的含有29个字符的字符串,并且会与密码一起合并进行最终的密文生成。并且每一次生成的盐的值都是不同的。
BCrypt不支持反运算,只支持密码校验。
它的一些api方法有:
1). 生成盐 :
BCrypt.gensalt();
2). 加密 :
BCrypt.hashpw();
3). 校验
BCrypt.checkpw();
(bcrypt验证方式和其它加密方式不同,不是直接解密得到明文,也不是二次加密比较密文,而是把明文和存储的密文一块运算得到另一个密文,如果这两个密文相同则验证成功。)