【Security】密码加密

简介:

加密意义:

         2011年12月12日,有人在网络上公开了一个包含600万个CSDN用户资料的数据库,数据全部为明文存储,包括用户名,密码以及注册邮箱。事件发生后CSDN在微博,官方网站等隧道发出声明,解释说此数据库是2009年备份所用,因不明原因泄露,已经向警方报案,后又在官网发出了公开道歉信。在接下来的十多天里,金山,网易,京东,当当,新浪等多家公司被卷入到这次事件中。整个事情中最触目惊心的莫过于CSDN把用户密码明文存储,由于很多用户是多个网站公用一个密码,因此一个网站密码泄露就会照成很大的安全隐患。由于有了这么多前车之鉴,我们现在做系统时,密码都要加密处理。

        在前面案例中,凡是涉及密码的地方,我们都采用明文存储,在实际项目中着肯定是不可取的,因为这回带来极高的安全风险。在企业级应用中,密码不仅需要加密,还需要加·盐·,最大程度地保证密码的安全

常见方案:

Hash算法,单向自适应函数

加密方案:

使用固定密码加密方案:

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Bean
    public UserDetailsService userDetailsService() {
        InMemoryUserDetailsManager inMemoryUserDetailsManager = new InMemoryUserDetailsManager();
        inMemoryUserDetailsManager.createUser(User.withUsername("wn").password(passwordEncoder().encode("123")).roles("ADMIN").build());
        return inMemoryUserDetailsManager;
    }
    
    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService());
    }

使用灵活密码加密方案:

    @Bean
    public UserDetailsService userDetailsService(){
        InMemoryUserDetailsManager inMemoryUserDetailsManager=new InMemoryUserDetailsManager();
        inMemoryUserDetailsManager.createUser(User.withUsername("wn").password("{bcrypt}123").roles("ADMIN").build());
        return inMemoryUserDetailsManager;
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService());
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值