什么是密码的加密加盐处理?

1、首先介绍一下常规的登录认证(非安全性)l 数据库表如下所示:
什么是密码的加密加盐处理?文章插图

账 号:密 码:

l 用户通过表单提交用户名 , 密码两个字段查询数据库匹配 , 实现登录认证功能 , 但存在的安全隐患问题太多:
(1)数据库密码以明文的形式进行存储 。
(2)数据传输的过程中未对数据进行加密处理 。
2、针对以上两个问题进行分析和解决l 安全加密:首先对数据库表的password字段进行摘要md5处理 , sql语句如下:
什么是密码的加密加盐处理?文章插图
l md5加密后的数据
什么是密码的加密加盐处理?文章插图
l 数据库密码加密后 , 校验的逻辑就发生了些变化 , 需要对提交的密码进行加密之后再做对比 , 但是这样子还是不安全 。
(1)通过以上步骤 , 我们只对数据库的password明文字段进行了简单的MD5加密 , 进入 输入加密后的密文进行解密后可以得到明文密码
什么是密码的加密加盐处理?文章插图
(2)容易根据密文位数推测算法 , 从而使用工具破解 。
(3)真实密码相同 , 加密过的密码也相同 。
3、接下来我们介绍一下对其进行加盐处理l 在表中添加一列salt字段(盐) , 内容随意输入23sd2 , 然后和原来的明文密码123456结合 , 再进行md5加密
什么是密码的加密加盐处理?文章插图
什么是密码的加密加盐处理?文章插图
说明:所谓的salt字段就是一个随机的字段 , 具体随机算法就不讨论了 , 每当用户注册账户时 , 后台就给它随机生成一个不同的字段 , 然后根据password和salt字段结合进行摘要处理 , 存在数据库表中的password字段 , 这样一来 , 原来明文都是123456生成的密文就不一样了 。
以上的步骤我们只是对数据库进行了加密 , 为了防止用户输入密码在传输的过程中被抓包工具获取 , 我们还要在密码传输的过程中进行加密 , 这样可以使得获取到的也是密文 。
4、最后介绍下BCrypt加盐加密l 经过BCryptPasswordEncoder加密后的内容 , 不需要专门的salt字段存储盐 , 而是在密文中 。
什么是密码的加密加盐处理?文章插图
l BCrypt密码图解
什么是密码的加密加盐处理?文章插图
l Bcrypt有四个变量:
saltRounds: 正数 , 代表hash杂凑次数 , 数值越高越安全 , 默认10次 。
myPassword: 明文密码字符串 。
salt: 盐 , 一个128bits随机字符串 , 22字符
myHash: 经过明文密码password和盐salt进行hash
l 如何校验正确性
在校验时 , 从密文中取出盐salt , salt跟password进行hash , 得到的结果跟保存在DB中的hash进行比对 。
总结:l 对于用户的密码保护 , 数据库对敏感的字符内容一定要进行加密之后存储 。
l 如果只是单纯的对密码进行加密 , 密码字符一样会导致加密后的内容也一样 , 会出现破解一个就可以破解一片的情况 。
【什么是密码的加密加盐处理?】


推荐阅读