`
Raistlin
  • 浏览: 19467 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

好久没编码了,前段时间帮同事整了个LDAP SSHA校验

    博客分类:
  • J2SE
阅读更多

好久不编码了,正发碰上同事要用,就匆匆忙忙写了一段,以后有时间还是要自己多写点东西玩,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);
    }

}

分享到:
评论

相关推荐

    SSHA.zip_SSHA_java SSHA_ssha加密

    LDAP-SHA与SSHA类似,但在存储时,整个SSHA哈希会被进一步Base64编码,以便在LDAP服务器中存储和检索。 5. **安全注意事项**: - 盐值应足够随机且长度适中,通常8-16字节。 - 不要使用可预测的盐值,如用户名或...

    论文研究-基于SSH和LDAP的分布式安全文件系统.pdf

    如何为文件系统提供更完备和更强伸缩性的安全保障是...基于LDAP技术和SSH协议设计了一个分布式安全文件系统,为文件系统提供了灵活而强大的安全策略保护,介绍了分布式安全文件系统的框架、原理以及安全设计以及分析。

    JAVA中使用LDAP进行用户认证

    JAVA中使用LDAP进行用户认证 JAVA中使用LDAP进行用户认证是指在JAVA应用程序中使用轻量级目录访问协议(LDAP)来进行用户身份验证。LDAP是一种基于X.500标准的目录访问协议,但它更简单、更灵活,可以根据需要进行...

    RuoYi前后端不分离项目整合LDAP

    基于RuoYi框架,使用的是ruoyi前后端不分离的版本,实现对LDAP的整合 基于RuoYi框架,使用的是ruoyi前后端不分离的版本,实现对LDAP的整合 基于RuoYi框架,使用的是ruoyi前后端不分离的版本,实现对LDAP的整合 基于...

    spring boot集成ldap

    在Spring Boot项目中,我们可以使用`spring-boot-starter-ldap`和`spring-boot-starter-data-ldap`这两个starter来引入LDAP支持。在`pom.xml`或`build.gradle`文件中添加如下依赖: ```xml &lt;groupId&gt;org.spring...

    ldap.zip_LDAP DELPHI_delphi ldap

    综上所述,这个"ldap.zip"压缩包中的项目是一个结合了DELPHI和LDAP技术的电话簿应用,涵盖了从连接LDAP服务器、查询和操作数据,到设计用户界面等多个方面的知识。开发者在实现这个应用时,需要熟练掌握DELPHI编程和...

    LdapBrowser282.rar_LdapBrows_LdapBrowser.282_ldap_ldapBrowser_op

    标题中的"LdapBrowser282.rar_LdapBrows_LdapBrowser.282_ldap_ldapBrowser_op"指的是LdapBrowser的282版本的压缩文件,它包含了该软件的相关组件和可能的操作指南。LdapBrowser是一款专用于管理和查看OpenLDAP...

    LdapBrowser ldap连接工具

    **LDAP浏览器:深入理解与应用** LDAP(轻量级目录访问协议)是一种用于查询和管理分布式目录服务的网络协议,广泛应用于企业环境中的用户身份验证、权限管理和数据共享。LdapBrowser是一款专为开放源代码的...

    LdapAdmin---LDAP工具

    3. **稳定性和性能**:作为“非常稳定”的工具,LdapAdmin能够可靠地处理大量目录数据,且在长时间运行时保持高效。 4. **64位版本**:64位版本的LdapAdmin能充分利用现代计算机的内存资源,处理大规模的目录结构...

    ldap安装与客户端ldapadmin windows

    **LDAP(轻量级目录访问协议)是一种网络协议,用于访问和管理分布式目录服务。它在各种操作系统上广泛使用,包括Windows。本文将详细介绍在Windows环境下安装LDAP服务器以及使用 LDAP 客户端工具 LdapAdmin 的步骤...

    LdapBrowser2.82版和LDAP使用手册

    通过这份LdapBrowser 2.82版和配套的“LDAP安装说明(windows).doc”,你可以深入了解如何管理和操作LDAP目录,以及在Windows环境中部署和配置一个LDAP服务器。这些知识对于提升你在IT领域的专业技能,尤其是在网络...

    ldap账号迁移流程

    本文将详细介绍一个实际操作案例,展示如何从一台旧的LDAP服务器完整地迁移账号数据至新的服务器,同时也会介绍OpenLDAP的安装流程。 #### 二、准备工作 在开始迁移之前,确保以下条件已满足: 1. **新旧两台...

    简单的ldap客户端,可替代ldapAdmin

    **LDAP简介** LDAP(Lightweight Directory Access Protocol)是一种轻量级目录访问协议,常用于存储和检索用户账户、联系人信息、配置数据等结构化信息。它基于X.500标准,但设计得更为简单且适合互联网环境。LDAP...

    ldap 浏览器 LdapBrowser282

    **LDAP浏览器LdapBrowser282详解** LDAP(Lightweight Directory Access Protocol)是一种用于访问目录服务的协议,常用于组织和管理用户、组、资源等信息。LdapBrowser282是一款专门针对LDAP目录服务的浏览和管理...

    LDAP error code 一览表

    ### LDAP错误代码一览表 #### 引言 在日常的IT运维工作中,LDAP(轻量目录访问协议)作为一项常用的身份认证与管理技术,在企业级应用中占据着重要的位置。然而,在部署、维护或者调试LDAP服务的过程中,难免会...

    Go-ldap-test-tool一个轻量级的ldap测试工具

    【Go-ldap-test-tool:一个轻量级的LDAP测试工具】 在信息技术领域,LDAP(Lightweight Directory Access Protocol)是一种用于访问和管理分布式目录服务的标准协议。它被广泛应用于组织内部的身份验证、用户权限...

    ldapadmin,windows下管理ldap的工具

    **LDAPadmin:Windows环境下的LDAP管理工具** 在IT领域,LDAP(Lightweight Directory Access Protocol)是一种广泛用于存储和检索用户信息、配置数据等目录服务的数据访问协议。它为分布式网络提供了一个标准的...

    LdapBrowser282.zip

    - **浏览目录结构**:LdapBrowser提供了一个直观的界面,让用户能够浏览整个LDAP目录结构,从根DN(Distinguished Name)开始,逐层展开,查看每个条目的详细信息。 - **搜索功能**:用户可以通过输入关键字或使用...

    ldapbrowser,LDAP连接工具

    `ldapbrowser`是一个专门针对LDAP服务的连接工具,它允许管理员便捷地浏览、查询、编辑和管理LDAP目录。这个工具类似于Java的`.jar`文件打开工具,因为它提供了一个图形用户界面(GUI),使得非程序员也能直观地操作...

    Spring Security ldap 1.3.2

    而Spring Security LDAP模块则是Spring Security的一个扩展,它允许开发者利用 Lightweight Directory Access Protocol (LDAP) 进行用户认证和授权。在Spring Security 1.3.2版本中,这个模块为开发者提供了与LDAP...

Global site tag (gtag.js) - Google Analytics