วันจันทร์ที่ 16 มิถุนายน พ.ศ. 2557

การเข้ารหัส รหัสผ่านก่อนลงใน LDAP และการถอดรหัส รหัสผ่านก่อนนำไปใช้

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

ไม่มีความคิดเห็น:

แสดงความคิดเห็น