我是靠谱客的博主 重要大地,最近开发中收集的这篇文章主要介绍微人事第十天:Spring Security加密,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在之前的博客中我们对于登陆的密码都是不加密的,现在为了安全起见,我们需要将密码由明文加密成为密文。

密码加密我们一般会用到散列函数,又称散列算法、哈希函数,这是一种从任何数据中创建数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来,然后将数据打乱混合,重新创建一个散列值。散列值通常用一个短的随机字母和数字组成的字符串来代表。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。我们常用的散列函数有 MD5 消息摘要算法、安全散列算法(Secure Hash Algorithm)。

但是仅仅使用散列函数还不够,为了增加密码的安全性,一般在密码加密过程中还需要加盐,所谓的盐可以是一个随机数也可以是用户名,加盐之后,即使密码明文相同的用户生成的密码密文也不相同,这可以极大的提高密码的安全性。但是传统的加盐方式需要在数据库中有专门的字段来记录盐值,这个字段可能是用户名字段(因为用户名唯一),也可能是一个专门记录盐值的字段,这样的配置比较繁琐。

Spring Security 提供了多种密码加密方案,官方推荐使用 BCryptPasswordEncoder,BCryptPasswordEncoder 使用 BCrypt 强哈希函数,开发者在使用时可以选择提供 strength 和 SecureRandom 实例。strength 越大,密钥的迭代次数越多,密钥迭代次数为 2^strength。strength 取值在 4~31 之间,默认为 10。

不同于 Shiro 中需要自己处理密码加盐,在 Spring Security 中,BCryptPasswordEncoder 就自带了盐,处理起来非常方便。

操作流程:
在配置类中添加Bean,返回BCryptPasswordEncoder对象

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

在测试类中将密码123加密10次,每一次的密文都是不一样的

package org.javaboy.security;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@SpringBootTest
class SecurityApplicationTests {

    @Test
    void contextLoads() {
        for (int i = 0; i < 10; i++) {
            BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
            System.out.println(encoder.encode("123"));
        }
    }

}

打印出的密码选出其中几个黏贴到配置类中:

 @Autowired
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication()
                .withUser("javaboy").password("$2a$10$/kEv.secGR.i.M.EsXujH.dssxbYwjsr2LAeW2Gkt0VQlxwiEkXL2").roles("admin")
                .and()
                .withUser("江南一点雨").password("$2a$10$JfWIkzViqNmvF/tBnNmfPeMz3gjJ9RKiWWRLciJGO1L3pW7PGNTFi").roles("user");
    }

这里两个密码虽然不一样但是加密之前的明文都是123,现在测试:
在这里插入图片描述
访问成功,加密生效
在这里插入图片描述

最后

以上就是重要大地为你收集整理的微人事第十天:Spring Security加密的全部内容,希望文章能够帮你解决微人事第十天:Spring Security加密所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部