java ldap用户密码md5加密
在这里不过多介绍ldap,因为这样的文章特别多,这里就简单直接的记录这一个问题。
在springboot中通过引入spring-boot-starter-data-ldap,使用LdapTemplate真的挺方便,现在遇到一个问题,添加用户时,userPasswod在ldap中显示的是明文密码,我现在要对这个userPassword加密.
而我们不做任何设置查看源码发现默认使用的是simple
public class SimpleDirContextAuthenticationStrategy implements DirContextAuthenticationStrategy {
private static final String SIMPLE_AUTHENTICATION = "simple";
public SimpleDirContextAuthenticationStrategy() {
}
public void setupEnvironment(Hashtable<String, Object> env, String userDn, String password) {
env.put("java.naming.security.authentication", "simple");
env.put("java.naming.security.principal", userDn);
env.put("java.naming.security.credentials", password);
}
再看源码中也有DIGEST-MD5方式加密,但是找了半天不知道怎么配置才能调用,搜索也没发现他有引用这个类的地方。
查看springboot官网有没有相关配置,告诉可以配置spring.ldap.base-environment,所以就配置了
spring.ldap.base-environment.java.naming.security.authentication=DIGEST-MD5
最后跟代码发现还是会调用SimpleDirContextAuthenticationStrategy,而且配置的变量又会被重新定义成simple。
public class DigestMd5DirContextAuthenticationStrategy implements DirContextAuthenticationStrategy {
private static final String DIGEST_MD5_AUTHENTICATION = "DIGEST-MD5";
public DigestMd5DirContextAuthenticationStrategy() {
}
public DirContext processContextAfterCreation(DirContext ctx, String userDn, String password) {
return ctx;
}
public void setupEnvironment(Hashtable<String, Object> env, String userDn, String password) {
env.put("java.naming.security.authentication", "DIGEST-MD5");
env.put("java.naming.security.principal", userDn);
env.put("java.naming.security.credentials", password);
}
}
经过各种查官网,看源码,都不行,然后就研究ldap,看ldap怎么加密码的,发现ldap有一条命令可以返回md5加密码,然后拿这个加密密码存入userPasswod,再登录是可以的,所以只要我知道它是怎么加密的,我也按这种方式加密,ldap就可以解密。
[root@alone ~]# slappasswd -h {md5} -s "x1"
{MD5}bb+awtoJ7h096/WlGHPsbQ==


ldap md5加密代码如下:
/**
* ldap md5加密
* @param str
* @return
* @throws NoSuchAlgorithmException
* @throws UnsupportedEncodingException
*/
public static String LdapEncoderByMd5(String psw) throws NoSuchAlgorithmException, UnsupportedEncodingException {
MessageDigest md5=MessageDigest.getInstance("MD5");
BASE64Encoder base64en = new BASE64Encoder();
String md5psw=base64en.encode(md5.digest(psw.getBytes("utf-8")));
return "{MD5}"+ md5psw;
}
java ldap用户密码md5加密的更多相关文章
- Sql 数据库 用户密码MD5加密
直接给代码先 DECLARE @TAB TABLE( NAEM VARCHAR(50) ) DECLARE @PA VARCHAR(50) DECLARE @A VARCHAR(10) SET @A= ...
- node.js中用户密码的加密
crypro实现用户密码的加密 在实际的项目中,只要涉及到用户的信息,就是十分重要的.设想一下数据库里面存放的用户的密码是明文的形式,后果是有多严重.所以今天给大家分享一下express中怎样实现用户 ...
- day10学python socket用户交互+MD5加密
socket用户交互+MD5加密 利用socket从client传输文件指令于server 再返还字节大小与内容 socketserver的使用(重要) 注意: ##client.recv(1024) ...
- python接口自动化测试二十七:密码MD5加密 ''' MD5加密 ''' # 由于MD5模块在python3中被移除 # 在python3中使用hashlib模块进行md5操作 import hashlib # 待加密信息 str = 'asdas89799,.//plrmf' # 创建md5对象 hl = hashlib.md5() # Tips # 此处必须声明encode # 若写法为
python接口自动化测试二十七:密码MD5加密 ''' MD5加密 '''# 由于MD5模块在python3中被移除# 在python3中使用hashlib模块进行md5操作import has ...
- 13.MD5对用户密码进行加密
MD5概述 用户名密码保存在客户端是一种十分危险的行为.所以需要进行加密后保存. 其中MD5就是一种比较常用的加密算法. 与其说MD5算法是一种加密算法,不如说是一种数据指纹(数据摘要)算法. 其特点 ...
- 利用Java自带的MD5加密java.security.MessageDigest;
MD5加密算法,即"Message-Digest Algorithm 5(信息-摘要算法)",它由MD2.MD3.MD4发展而来的一种单向函数算法(也就是HASH算法),它是国际著 ...
- 如何正确对用户密码进行加密?转自https://blog.csdn.net/zhouyan8603/article/details/80473083
本文介绍了对密码哈希加密的基础知识,以及什么是正确的加密方式.还介绍了常见的密码破解方法,给出了如何避免密码被破解的思路.相信读者阅读本文后,就会对密码的加密有一个正确的认识,并对密码正确进行加密措施 ...
- Java实现对文本文件MD5加密并ftp传送到远程主机目录
需求描述: 客户出完账之后需要把出账的数据以文本文件的方式传送给收入管理系统,客户以前是通过本地的一个工具软件上传的,由于安全监管的原因,不允许在本地使用工具上传,因此客户希望我们在已经上线使用的系统 ...
- shiro系列五、shiro密码MD5加密
Shiro-密码的MD5加密 1.密码的加密 在数据表中存的密码不应该是123456,而应该是123456加密之后的字符串,而且还要求这个加密算法是不可逆的,即由加密后的字符串不能反推回来原来的密 ...
随机推荐
- (备忘)Python字符串、元组、列表、字典互相转换的方法
#1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} #字典转为字符串,返回:<type 'str'> {'age': 7, ...
- easyUI 布局
Layout(布局) 布局容器有5个区域:北.南.东.西和中间.中间区域面板是必须的,边缘的面板都是可选的. 每个边缘区域面板都可以通过拖拽其边框改变大小,也可以点击折叠按钮将面板折叠起来.布局可以进 ...
- 2019 ICPC 南昌网络赛I:Yukino With Subinterval(CDQ分治)
Yukino With Subinterval Yukino has an array a_1, a_2 \cdots a_na1,a2⋯*a**n*. As a tsundere girl, Yuk ...
- okhttp连接池:put,get方法&connection回收
OkHttp连接池put和get方法: 在上一次[https://www.cnblogs.com/webor2006/p/9281429.html]咱们分析了连接拦截器,如下: 不管是Http1.0还 ...
- JAVA8初探-让方法参数具备行为能力并引入Lambda表达式
关于JAVA8学习的意义先来贴一下某网站上的对它的简单介绍:“Java 8可谓Java语言历史上变化最大的一个版本,其承诺要调整Java编程向着函数式风格迈进,这有助于编写出更为简洁.表达力更强,并且 ...
- 【记忆化搜索/数位DP】zznu2175(长度为n的含有ACM的字符串)
随机字符串 题目描述 起名字什么的最麻烦,我们来生成一些随机字符串吧 生成的字符串当然是有要求的: .长度不能超过n .字符串中仅包含大写字母 .生成的字符串必须包含字符串“ACM” ok,是不是很简 ...
- config.json读取和存储
json格式的配置文件的读取和存储 public class ConfigHelper { public static T GetConfig<T>(string path) { if ( ...
- fonts/font-awesome-woff2 404问题
报错环境: vue 开发的项目 npm 引入的font-awesome, 页面正常显示,就是控制台会报这个错误 产生原因:因为服务器IIS不认SVG,WOFF/WOFF2 这几个文件类型,只要在IIS ...
- mysql基础_数据类型
1.数字 (1)tinyint(小整数值) 范围:有符号(-128,127) 无符号(0.255) (2)int(大整数值) 范围:有符号 (-2 147 483 648,2 147 483 647 ...
- Sklearn分类树在合成数集上的表现
小伙伴们大家好~o( ̄▽ ̄)ブ,今天我们开始来看一下Sklearn分类树的表现,我的开发环境是Jupyter lab,所用的库和版本大家参考: Python 3.7.1(你的版本至少要3.4以上) S ...