Authen ผ่าน LDAP แล้ว ทำการ synchronize ข้อมูลล่าสุดไปลง Database ซึ่งใน Field ของ Password ไม่สามารถนำไปใช้ได้ทันที หากต้องแปลงให้อยู่ในรูปของ MD5 (Hex Code) ก่อน
ตัวอย่าง Method แปลง รหัสของเราก่อนเก็บลง LDAP
public static String digestMd5(final String password) {
String base64;
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(password.getBytes());
base64 = new BASE64Encoder().encode(digest.digest());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
return "{MD5}" + base64;
}
อินพุท
1234
ผลลัพธ์
{MD5}gdyb21LQTcIANtvYMT7QVQ==
ผลลัพธืนี้จะถูกเก็บลง LDAP โดยไม่สามารถแปลงกลับมาเป็น 1234 ได้
ตัวอย่าง Method ถอดรหัสที่นำมาจาก LDAP แล้วแปลงเป็น Hex
public static String base64ToHex(String base64) {
try {
base64 = base64.substring(5, base64.length());
byte[] bytes = new BASE64Decoder().decodeBuffer(base64);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < bytes.length; i++) {
sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
} catch (IOException ex) {
Logger.getLogger(Ldap.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
อินพุท
{MD5}gdyb21LQTcIANtvYMT7QVQ==
ผลลัพธ์
81dc9bdb52d04dc20036dbd8313ed055