好久不编码了,正发碰上同事要用,就匆匆忙忙写了一段,以后有时间还是要自己多写点东西玩,IDE的快捷键都忘了不少,唉~
package com.krynn.raistlin;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import weblogic.apache.xerces.impl.dv.util.Base64;
/**
* @author Raistlin
*
*/
public class LDAPPWVerify {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
System.out.println("USER-A,123:"
+ verifySHA("{SSHA}u2tWu+5vUGHxwrtmNfsZ9HmVrd5SMt16NAODEA==",
"123"));
System.out.println("USER-A,1234:"
+ verifySHA("{SSHA}u2tWu+5vUGHxwrtmNfsZ9HmVrd5SMt16NAODEA==",
"1234"));
System.out.println("USER-B,12345678:"
+ verifySHA("{SSHA}J5AvX6TexS54iJQttTnRz41Gn3jlGdhNPijLSA==",
"12345678"));
System.out.println("USER-B,123:"
+ verifySHA("{SSHA}J5AvX6TexS54iJQttTnRz41Gn3jlGdhNPijLSA==",
"123"));
System.out.println("USER-C,internet:"
+ verifySHA("{SSHA}Dw/8FJCva32hA765mLk/K4WXgMk3bOsIfgBOfw==",
"internet"));
System.out.println("USER-C,123:"
+ verifySHA("{SSHA}Dw/8FJCva32hA765mLk/K4WXgMk3bOsIfgBOfw==",
"123"));
}
/**
* 用于用户密码在LDAP进行验证
*
* @param ldappw
* LDAP中取出的用户密码
* @param inputpw
* 用户输入的用户密码
* @return 是否验证通过
* @throws NoSuchAlgorithmException
*/
public static boolean verifySHA(String ldappw, String inputpw)
throws NoSuchAlgorithmException {
// MessageDigest 提供了消息摘要算法,如 MD5 或 SHA,的功能,这里LDAP使用的是SHA-1
MessageDigest md = MessageDigest.getInstance("SHA-1");
// 取出加密字符
if (ldappw.startsWith("{SSHA}")) {
ldappw = ldappw.substring(6);
} else if (ldappw.startsWith("{SHA}")) {
ldappw = ldappw.substring(5);
}
// 解码BASE64
byte[] ldappwbyte = Base64.decode(ldappw.getBytes());
byte[] shacode;
byte[] salt;
// 前20位是SHA-1加密段,20位后是最初加密时的随机明文
if (ldappwbyte.length <= 20) {
shacode = ldappwbyte;
salt = new byte[0];
} else {
shacode = new byte[20];
salt = new byte[ldappwbyte.length - 20];
System.arraycopy(ldappwbyte, 0, shacode, 0, 20);
System.arraycopy(ldappwbyte, 20, salt, 0, salt.length);
}
// 把用户输入的密码添加到摘要计算信息
md.update(inputpw.getBytes());
// 把随机明文添加到摘要计算信息
md.update(salt);
// 按SSHA把当前用户密码进行计算
byte[] inputpwbyte = md.digest();
// 返回校验结果
return MessageDigest.isEqual(shacode, inputpwbyte);
}
}
分享到:
相关推荐
Java中使用SSHA对数据进行加密, LDAP-SHA加密与解析.
如何为文件系统提供更完备和更强伸缩性的安全保障是...基于LDAP技术和SSH协议设计了一个分布式安全文件系统,为文件系统提供了灵活而强大的安全策略保护,介绍了分布式安全文件系统的框架、原理以及安全设计以及分析。
基于RuoYi框架,使用的是ruoyi前后端不分离的版本,实现对LDAP的整合 基于RuoYi框架,使用的是ruoyi前后端不分离的版本,实现对LDAP的整合 基于RuoYi框架,使用的是ruoyi前后端不分离的版本,实现对LDAP的整合 基于...
项目中使用spring boot框架集成了ldap协议的方法,调用了增删改查的API,基本实现了spring boot对于ldap的所有方法,只要搭建好了ldap服务器,改一下配置文件即可运行。
LDAP入門,LDAP入門LDAP入門LDAP入門LDAP入門LDAP入門LDAP入門LDAP入門LDAP入門LDAP入門LDAP入門LDAP入門
LdapBrowser2.82版,能浏览服务器的ldap数据,还有一份word详细使用文档及ldap安装说明
该项目提供了一个实用程序来管理存储在LDAP中的SSH公共密钥,还提供了一个脚本,供OpenSSH服务器从LDAP加载授权密钥。 为什么? 当您有许多服务器时,很难管理授权密钥。 您必须将所有公共密钥复制到要登录的每个...
资源没有对LDAP创建的内容。 资源主要有: rar包:一个Web工程, 主要有,利用Spring-ldap对LDAP的基本操作(查询,增删改);Extjs实现的对Ldap的树状结构的显示,结构有点类似Softerra LDAP;一个测试类。 pdf:...
LdapBrowser282 ldap浏览器 LdapBrowser 查看openldap的好工具。 使用需要有JDK环境。
java连接和验证的ldap学习文档,密码的校验,通过jndi连接ldap服务
1 LDAP 基础 LDAP 的英文全称是 Lightweight Directory Access Protocol, 一般都简称为 LDAP。 它是基于 X.500 标准的,但是简单多了并且可以根据需要定制。与 X.500 不同,LDAP 支 持 TCP/IP,这对访问 Internet ...
# LDAP连接工具 LDAP是一种轻量级目录访问协议,用于在网络中访问分布式目录服务。要连接到LDAP目录,需要一种LDAP连接工具。 以下是一些常用的LDAP连接工具: ## 1. Apache Directory Studio Apache Directory ...
LDAP是轻量级目录访问协议的简称(Lightweight Directory ...3:LDAP是一个标准的,开放的协议,具有平台无关性。 4:数据分布广,规模可灵活扩充。 5:LDAP目录服务器可以使任何一种开放源代码或商用的LDAP目录服务器。
ldap安装与客户端ldapadmin windows版本,
实际WEB项目整合 Shiro 以及 LDAP 方案.docx,用户访问WEB项目时,链接会被配置好的ShiroFilter拦截,如果用户会话没有经过认证,则重定向到登录URL,提交登录表单时,系统通过LDAP进行身份校验,校验通过后重定向到...
ldap的一个实例,自己做过一个小项目,以后也许用得着
LDAP
c操作ldap例c操作ldap例c操作ldap例c操作ldap例c操作ldap例c操作ldap例c操作ldap例c操作ldap例c操作ldap例
GitHub-Ldap 是 GitHub Enterprise 的一部分,是 LDAP 客户端。GitHub-Ldap 封装了 Net::LDAP,方便易用。 标签:GitHub
java操作ldap类java操作ldap类java操作ldap类