1 spring security passwordencoder
spring security 5不需要配置密码的加密方式,而是用户密码加前缀的方式表明加密方式,如:
-
{md5}88e2d8cd1e92fd5544c8621508cd706b
代表使用的是md5
加密方式; -
{bcrypt}$2a$10$ezegvvv2zxr/vgivfzqzs.jlv878apbgrt9mapk1wrg0ovsf4yui6
代表使用的是bcrypt
加密方式。
spring security官方推荐使用更加安全的bcrypt加密方式。
这样可以在同一系统中支持多种加密方式,迁移用户比较省事。spring security 5支持的加密方式在passwordencoderfactories中定义:
public class passwordencoderfactories {
public static passwordencoder createdelegatingpasswordencoder() {
string encodingid = "bcrypt";
map encoders = new hashmap();
encoders.put(encodingid, new bcryptpasswordencoder());
encoders.put("ldap", new ldapshapasswordencoder());
encoders.put("md4", new md4passwordencoder());
encoders.put("md5", new messagedigestpasswordencoder("md5"));
encoders.put("noop", nooppasswordencoder.getinstance());
encoders.put("pbkdf2", new pbkdf2passwordencoder());
encoders.put("scrypt", new scryptpasswordencoder());
encoders.put("sha-1", new messagedigestpasswordencoder("sha-1"));
encoders.put("sha-256", new messagedigestpasswordencoder("sha-256"));
encoders.put("sha256", new standardpasswordencoder());
return new delegatingpasswordencoder(encodingid, encoders);
}
private passwordencoderfactories() {
}
}
2 测试
2.1 pom.xml
4.0.0
com.hfcsbc
security
0.0.1-snapshot
jar
security
demo project for spring boot
org.springframework.boot
spring-boot-starter-parent
2.0.0.m7
utf-8
utf-8
1.8
org.springframework.boot
spring-boot-starter-security
org.springframework.boot
spring-boot-starter-test
test
org.springframework.security
spring-security-test
test
org.projectlombok
lombok
org.springframework.boot
spring-boot-maven-plugin
spring-snapshots
spring snapshots
https://repo.spring.io/snapshot
true
spring-milestones
spring milestones
https://repo.spring.io/milestone
false
spring-snapshots
spring snapshots
https://repo.spring.io/snapshot
true
spring-milestones
spring milestones
https://repo.spring.io/milestone
false
2.2 测试
spring security 5.x默认使用bcrypt加密
@slf4j
public class domainuserdetailsservice {
public static void main(string[] args){
passwordencoder passwordencoder = passwordencoderfactories.createdelegatingpasswordencoder();
string encode = passwordencoder.encode("password");
log.info("加密后的密码:" encode);
log.info("bcrypt密码对比:" passwordencoder.matches("password", encode));
string md5password = "{md5}88e2d8cd1e92fd5544c8621508cd706b";//md5加密前的密码为:password
log.info("md5密码对比:" passwordencoder.matches("password", encode));
}
}
源码地址:http://www.wisely.top/2018/01/27/spring-security-5x-jian-rong-duo-zhong-mi-ma-jia-m/
相关推荐
spring security针对该功能有两种实现方式,一种是简单的使用加密来保证基于 cookie 的 token 的安全,另一种...这篇文章主要给大家介绍了关于spring security 5.x实现兼容多种密码的加密方式,需要的朋友可以参考下。
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
spring4gwt gwt spring 使得在 spring 框架下构造 gwt 应用变得很简单,提供一个易于理解的依赖注入和rpc机制。 java扫雷游戏 jvmine jvmine用applets开发的扫雷游戏,可在线玩。 public class jvmine extends java...
通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… java利用des私钥对称加密代码实例 ...
通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… java利用des私钥对称加密代码实例 ...
采用分层设计、双重验证、提交数据安全编码、密码加密、访问验证、数据权限验证。 使用maven做项目管理,提高项目的易开发性、扩展性。 --- ###更新日期2019-01-16 * 升级springboot版本为2.1.2.release ...
常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在c#里把arraylist转换为array 或 把array转换为arraylist c# 2.0 在.net 2.0中,让你的组件也可以绑定 .net20 一种简单的窗口控件ui状态控制方法 翻译msdn...