From 43ee7484334f99fcb7122cc66ed3c831f94ff553 Mon Sep 17 00:00:00 2001 From: Andreas Gohr Date: Thu, 15 Oct 2009 20:43:30 +0200 Subject: Support for kmd5 passcrypt method Ignore-this: c809bd207504f78e84685612b0a668a7 This is a MD5 based hashing method used in the Unclassified NewsBoard forum software (which is used for DokuWiki's supprt forum) darcs-hash:20091015184330-7ad00-38680848952bdb46052dcf3597fa5e91f892ca51.gz --- inc/auth.php | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'inc') diff --git a/inc/auth.php b/inc/auth.php index 9be5c19b4..684885890 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -872,6 +872,7 @@ function act_resendpwd(){ * crypt - Unix crypt * mysql - MySQL password (old method) * my411 - MySQL 4.1.1 password + * kmd5 - Salted MD5 hashing as used by UNB * * @author Andreas Gohr * @return string The crypted password @@ -942,6 +943,11 @@ function auth_cryptPassword($clear,$method='',$salt=null){ return sprintf("%08x%08x", ($nr & 0x7fffffff), ($nr2 & 0x7fffffff)); case 'my411': return '*'.sha1(pack("H*", sha1($clear))); + case 'kmd5': + $key = substr($salt, 16, 2); + $hash1 = strtolower(md5($key . md5($clear))); + $hash2 = substr($hash1, 0, 16) . $key . substr($hash1, 16); + return $hash2; default: msg("Unsupported crypt method $method",-1); } @@ -980,6 +986,9 @@ function auth_verifyPassword($clear,$crypt){ $method = 'mysql'; }elseif($len == 41 && $crypt[0] == '*'){ $method = 'my411'; + }elseif($len == 34){ + $method = 'kmd5'; + $salt = $crypt; }else{ $method = 'crypt'; $salt = substr($crypt,0,2); -- cgit v1.2.3