SpringSecurity密码加密-咸密码-用户授权验证

密码加密器

  • PasswordEncoder概念
    • 用户请求认证
      1. 拿出数据库中存储着的用户注册密码
      2. 比较此次用户上传的密码
  • 密码储存和验证的历史环境
    1. 原始的简单存储
      • 早期密码未经过加密直接储存在数据库,而访问数据库需要权限,所以有一定安全性
        • 但是如果出现数据库攻击
          • 如SQL Injection
            • 可以直接拿到明文,密码会直接泄漏
    2. 普通加密存储
      • 将密码Hash
        • 数据库仅保存Hash后的字符
          • 用户输入密码
            • Hash输入的密码
              • 比较用户Hash和数据库
                Hash
                • 如果遇到攻击
                  • 只泄露Hash
                    • 但是已经有技术(如Rainbow Tables)可以通过Lookup和表的相关技术破解
                      • 例如通过大量注册简单密码,拿到数据库对应密文,找到之间的关系。
    3. “咸密码”
      • 用户保存密码
      • 同时生成一串随机字节(盐)
        • Hash(用户密码+盐)
          • 数据库保存(用户密码+盐)的Hash值——SaltyHash
          • 单独明文保存盐
            • 用户请求认证,输入密码
              • 数据库拿到用户密码
                • Hash(新拿到的用户密码+盐)——newSaltyHash
                  • 比较两个加盐后生成的Hash值
                    • 此时Rainbow Table不起作用,因为每个简单密码加盐以后的Hash值都不一样
    4. 由于硬件进步,有些算法已经很好破解,如
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值