我可以通过JNDI读取LDAP中存储的密码。但是结果是一些乱码。那么我该如何解密呢?
下面是我的代码:
public static void main(String[] args)
{
String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
String MY_HOST = "ldap://KhooGP-Comp1:1389";
String MGR_DN = "cn=Directory Manager";
String MGR_PW = "password";
String MY_SEARCHBASE = "dc=QuizPortal";
String MY_FILTER = "uid=yiwei";
String MY_ATTRS[] = {"cn", "uid", "sn", "userpassword"};
//Identify service provider to use
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX);
env.put(Context.PROVIDER_URL, MY_HOST);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, MGR_DN);
env.put(Context.SECURITY_CREDENTIALS, MGR_PW);
try
{
// Create the initial directory context
InitialDirContext initialContext = new InitialDirContext(env);
DirContext ctx = (DirContext)initialContext;
System.out.println("Context Sucessfully Initialized");
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration results = ctx.search(MY_SEARCHBASE, MY_FILTER, constraints);
while(results != null && results.hasMore())
{
SearchResult sr = (SearchResult) results.next();
String dn = sr.getName() + "," + MY_SEARCHBASE;
System.out.println("Distinguished Name is " + dn);
Attributes ar = ctx.getAttributes(dn, MY_ATTRS);
if(ar == null)
{
System.out.println("Entry " + dn);
System.out.println(" has none of the specified attributes\n");
}
else
{
for(int i=0; i<MY_ATTRS.length; i++)
{
Attribute attr = ar.get(MY_ATTRS[i]);
System.out.println(MY_ATTRS[i] + ":");
for(Enumeration vals=attr.getAll(); vals.hasMoreElements();)
{
System.out.println("\t" + vals.nextElement());
}
}
}
}
}
catch(Exception e)
{
System.err.println(e);
}
}
Below is the result:
Distinguished Name is uid=yiwei,ou=Administrator,o=SID,dc=QuizPortal
cn:
yiwei huang
uid:
yiwei
sn:
huang
userpassword:
[B@1cd8669
有什么建议吗?? 提前谢谢了
凯文
您所看到的([B @ 1cd8669)是Java所说的“这是一个字节数组”。
存储的“密码”很可能是真实密码的哈希值或加密版本。顾名思义,密码散列是不可逆的,因此,如果LDAP存储散列,则您将无法查看用户的密码。
如果它是加密的,那么如果您知道算法和密钥,则解密非常简单。BouncyCastle是一个很棒的Java加密库,可用于解密密码。
基本上,您需要确切了解所要查找的内容,这取决于LDAP设置。
我必须从remore服务器检索并下载本地环境证书链。我可以使用浏览器嵌入式服务来实现,但据我所知,这种方法对证书链不起作用(或者有一些瓶颈)。这就是我试图使用openssl以下命令的原因: 它将打印出相应的证书信息,如: 我怎样才能将它转换为.crt或.cer格式?我可以只复制/粘贴到文本文件的适当扩展名吗?如果是,链的起点和终点在哪里?
问题内容: 您是否知道是否可以通过jndi的数据源像其他任何数据库一样在春季设置mongodb实例? 谢谢 问题答案: 如果您的意思是像具有JDBC访问权限的常规RDBMS,那么答案是否定的。
问题内容: 我是mongoDB的新手。我正在使用java和mongoDB。我有一个像 在集合中,所有文档的名称都不同,我只知道键名,如何获取值? 在mongo网站上,我只能找到和。 谢谢! 问题答案: 足够。 在Java中,它将是:
如何在Laravel中检索数据。 我有表用户,其中我有字段parent_id,其中我显示其user_id的信息。 现在我想显示已登录用户的信息 我试过这个 我得到了选定的parent_id,现在我想要user_id的名字。 我在试这个 它得到一个错误。请告诉我如何在我的代码中写这个来获得父id的名称。
问题内容: 我正在尝试使用JNDI创建与ActiveMQ的简单连接。 我有 队列名为“ example.A”。 根据接触JNDI的ActiveMQ文档,如果我想通过JNDI使用ConectionFactories和Queues(主题),则必须将jndi.properties文件放在我的类路径中。据我了解,默认情况下,activeMQ类路径是%activemq%/ conf目录。我没有改变。所以我的