/** * Hash a string for use in an LDAP password field. */ public static function hash($string, $algorithm = NULL) { switch ($algorithm) { case 'crypt': $hash = '{CRYPT}' . crypt($string, substr($string, 0, 2)); break; case 'salted crypt': $hash = '{CRYPT}' . crypt($string, self::salt(2)); break; case 'extended des': $hash = '{CRYPT}' . crypt($string, '_' . self::salt(8)); break; case 'md5crypt': $hash = '{CRYPT}' . crypt($string, '$1$' . self::salt(9)); break; case 'blowfish': $hash = '{CRYPT}' . crypt($string, '$2a$12$' . self::salt(13)); break; case 'md5': $hash = '{MD5}' . base64_encode(md5($string, TRUE)); break; case 'salted md5': $salt = SimpleLdap::salt(8); $hash = '{SMD5}' . base64_encode(md5($string . $salt, TRUE) . $salt); break; case 'sha': $hash = '{SHA}' . base64_encode(sha1($string, TRUE)); break; case 'salted sha': $salt = SimpleLdap::salt(8); $hash = '{SSHA}' . base64_encode(sha1($string . $salt, TRUE) . $salt); break; case 'unicode': $string = '"' . $string . '"'; $length = drupal_strlen($string); $hash = NULL; for ($i = 0; $i < $length; $i++) { $hash .= "{$string[$i]}"; } break; case 'none': default: $hash = $string; } return $hash; }