我添加了一个LDAP条目,该条目具有由
给出的属性BasicAttributes basicAttributes = new BasicAttributes();
BasicAttribute basicAttribute = new BasicAttribute("objectclass");
basicAttribute.add("top");
basicAttribute.add("Adapter");
basicAttributes.put(basicAttribute);
basicAttributes.put(new BasicAttribute("Name","testname"));
basicAttributes.put(new BasicAttribute("Topic", "testtopic"));
if (locid.length != 0) {
basicAttribute = new BasicAttribute("LocID");
for (int i = 0; i < locationid.length; i++)
basicAttribute.add(locationid[i]);
basicAttributes.put(basicAttribute);
}
basicAttributes.put(new BasicAttribute("Password", "passw"));
现在密码属性为 SHA哈希密码。
但是当我使用 ctx.getAttributes 检索属性时
Attributes result = ctx.getAttributes(dn);
NamingEnumeration<?> nm = result.getAll();
while (nm.hasMore()) {
Attribute at = (Attribute) nm.next();
System.out.println(nm.next());
}
}
我得到的输出是
Password: [B@119cca4
Name: testname
Topic: testtopic
LocID:
objectClass: top, Adapter
cn: test1234
如何将密码重新构建为String变量?
编辑:我试过这个while (nm.hasMore()) {
Attribute at = (Attribute) nm.next();
if ( at.getID().equals("Password"))
{
byte [] a = (byte[] )at.get();
String b = new String(a);
System.out.println(b);
}
}
现在打印出来 - {SSHA} AvvOJFnG2tjwNTGtDzDnubC / b2B1FbzP5S / LSQ ==
现在如何让它打印出来&#34; passw&#34; - 原始密码。
答案 0 :(得分:0)
经过哈希处理后,您无法检索纯文本密码;这是一种单向哈希。如果您绝对需要在之后恢复纯文本密码,建议将其存储在具有强可逆加密算法的另一个属性中。并锁定对加密值的访问。但是,如果您出于某种原因绝对需要纯文本密码(例如,您需要能够将其发布用于某些传统的单点登录过程),请执行此操作。