获取包含属性对象的 LDAP 属性
Get LDAP Attribute which contains an attribute object
我添加了一个 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
如何将 密码 重新构造为字符串变量?
编辑:我试过了
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==
现在我如何让它打印 "passw" - 原始密码。
明文密码一旦经过哈希处理就无法找回;这是一种单向哈希。如果您绝对 之后需要取回明文密码,建议将其存储在另一个具有强可逆加密算法的属性中。并锁定对加密值的访问。但是只有当你出于某种原因绝对需要纯文本密码时才这样做(即你需要能够 post 它用于一些遗留的单点登录过程)。
我添加了一个 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
如何将 密码 重新构造为字符串变量?
编辑:我试过了
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==
现在我如何让它打印 "passw" - 原始密码。
明文密码一旦经过哈希处理就无法找回;这是一种单向哈希。如果您绝对 之后需要取回明文密码,建议将其存储在另一个具有强可逆加密算法的属性中。并锁定对加密值的访问。但是只有当你出于某种原因绝对需要纯文本密码时才这样做(即你需要能够 post 它用于一些遗留的单点登录过程)。