好久不编码了,正发碰上同事要用,就匆匆忙忙写了一段,以后有时间还是要自己多写点东西玩,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);
}
}
分享到:
相关推荐
LDAP-SHA与SSHA类似,但在存储时,整个SSHA哈希会被进一步Base64编码,以便在LDAP服务器中存储和检索。 5. **安全注意事项**: - 盐值应足够随机且长度适中,通常8-16字节。 - 不要使用可预测的盐值,如用户名或...
如何为文件系统提供更完备和更强伸缩性的安全保障是...基于LDAP技术和SSH协议设计了一个分布式安全文件系统,为文件系统提供了灵活而强大的安全策略保护,介绍了分布式安全文件系统的框架、原理以及安全设计以及分析。
JAVA中使用LDAP进行用户认证 JAVA中使用LDAP进行用户认证是指在JAVA应用程序中使用轻量级目录访问协议(LDAP)来进行用户身份验证。LDAP是一种基于X.500标准的目录访问协议,但它更简单、更灵活,可以根据需要进行...
基于RuoYi框架,使用的是ruoyi前后端不分离的版本,实现对LDAP的整合 基于RuoYi框架,使用的是ruoyi前后端不分离的版本,实现对LDAP的整合 基于RuoYi框架,使用的是ruoyi前后端不分离的版本,实现对LDAP的整合 基于...
在Spring Boot项目中,我们可以使用`spring-boot-starter-ldap`和`spring-boot-starter-data-ldap`这两个starter来引入LDAP支持。在`pom.xml`或`build.gradle`文件中添加如下依赖: ```xml <groupId>org.spring...
综上所述,这个"ldap.zip"压缩包中的项目是一个结合了DELPHI和LDAP技术的电话簿应用,涵盖了从连接LDAP服务器、查询和操作数据,到设计用户界面等多个方面的知识。开发者在实现这个应用时,需要熟练掌握DELPHI编程和...
标题中的"LdapBrowser282.rar_LdapBrows_LdapBrowser.282_ldap_ldapBrowser_op"指的是LdapBrowser的282版本的压缩文件,它包含了该软件的相关组件和可能的操作指南。LdapBrowser是一款专用于管理和查看OpenLDAP...
**LDAP浏览器:深入理解与应用** LDAP(轻量级目录访问协议)是一种用于查询和管理分布式目录服务的网络协议,广泛应用于企业环境中的用户身份验证、权限管理和数据共享。LdapBrowser是一款专为开放源代码的...
3. **稳定性和性能**:作为“非常稳定”的工具,LdapAdmin能够可靠地处理大量目录数据,且在长时间运行时保持高效。 4. **64位版本**:64位版本的LdapAdmin能充分利用现代计算机的内存资源,处理大规模的目录结构...
**LDAP(轻量级目录访问协议)是一种网络协议,用于访问和管理分布式目录服务。它在各种操作系统上广泛使用,包括Windows。本文将详细介绍在Windows环境下安装LDAP服务器以及使用 LDAP 客户端工具 LdapAdmin 的步骤...
通过这份LdapBrowser 2.82版和配套的“LDAP安装说明(windows).doc”,你可以深入了解如何管理和操作LDAP目录,以及在Windows环境中部署和配置一个LDAP服务器。这些知识对于提升你在IT领域的专业技能,尤其是在网络...
本文将详细介绍一个实际操作案例,展示如何从一台旧的LDAP服务器完整地迁移账号数据至新的服务器,同时也会介绍OpenLDAP的安装流程。 #### 二、准备工作 在开始迁移之前,确保以下条件已满足: 1. **新旧两台...
**LDAP简介** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,常用于存储和检索用户账户、联系人信息、配置数据等结构化信息。它基于X.500标准,但设计得更为简单且适合互联网环境。LDAP...
**LDAP浏览器LdapBrowser282详解** LDAP(Lightweight Directory Access Protocol)是一种用于访问目录服务的协议,常用于组织和管理用户、组、资源等信息。LdapBrowser282是一款专门针对LDAP目录服务的浏览和管理...
### LDAP错误代码一览表 #### 引言 在日常的IT运维工作中,LDAP(轻量目录访问协议)作为一项常用的身份认证与管理技术,在企业级应用中占据着重要的位置。然而,在部署、维护或者调试LDAP服务的过程中,难免会...
【Go-ldap-test-tool:一个轻量级的LDAP测试工具】 在信息技术领域,LDAP(Lightweight Directory Access Protocol)是一种用于访问和管理分布式目录服务的标准协议。它被广泛应用于组织内部的身份验证、用户权限...
**LDAPadmin:Windows环境下的LDAP管理工具** 在IT领域,LDAP(Lightweight Directory Access Protocol)是一种广泛用于存储和检索用户信息、配置数据等目录服务的数据访问协议。它为分布式网络提供了一个标准的...
- **浏览目录结构**:LdapBrowser提供了一个直观的界面,让用户能够浏览整个LDAP目录结构,从根DN(Distinguished Name)开始,逐层展开,查看每个条目的详细信息。 - **搜索功能**:用户可以通过输入关键字或使用...
`ldapbrowser`是一个专门针对LDAP服务的连接工具,它允许管理员便捷地浏览、查询、编辑和管理LDAP目录。这个工具类似于Java的`.jar`文件打开工具,因为它提供了一个图形用户界面(GUI),使得非程序员也能直观地操作...
而Spring Security LDAP模块则是Spring Security的一个扩展,它允许开发者利用 Lightweight Directory Access Protocol (LDAP) 进行用户认证和授权。在Spring Security 1.3.2版本中,这个模块为开发者提供了与LDAP...