From 43ee7484334f99fcb7122cc66ed3c831f94ff553 Mon Sep 17 00:00:00 2001 From: Andreas Gohr <andi@splitbrain.org> Date: Thu, 15 Oct 2009 20:43:30 +0200 Subject: [PATCH] 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 +++++++++ lib/plugins/config/settings/config.metadata.php | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) 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 <andi@splitbrain.org> * @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); diff --git a/lib/plugins/config/settings/config.metadata.php b/lib/plugins/config/settings/config.metadata.php index f78715de5..41f8497bf 100644 --- a/lib/plugins/config/settings/config.metadata.php +++ b/lib/plugins/config/settings/config.metadata.php @@ -119,7 +119,7 @@ $meta['_authentication'] = array('fieldset'); $meta['useacl'] = array('onoff'); $meta['autopasswd'] = array('onoff'); $meta['authtype'] = array('authtype'); -$meta['passcrypt'] = array('multichoice','_choices' => array('smd5','md5','apr1','sha1','ssha','crypt','mysql','my411')); +$meta['passcrypt'] = array('multichoice','_choices' => array('smd5','md5','apr1','sha1','ssha','crypt','mysql','my411','kmd5')); $meta['defaultgroup']= array('string'); $meta['superuser'] = array('string'); $meta['manager'] = array('string'); -- GitLab