# MediaWiki Passwort in [BLOB - 32 Bytes]



## Andy1407 (25. August 2005)

Hallo zusammen.

Hab folgendes Problem:
Will in meiner DB einen neuen Wiki-User über meinen eigenen mysql-Input einfügen.

Das Passwort von Wiki ist md5 verschlüsselt.
Kein Problem. Ich verschlüssle mein PW auch einfach md5 (  md5($pw)  ).
Wenn ich mich jetzt aber in Wiki mit dem neuen Account anmelden will, wird mir gemeldet, dass das PW falsch ist.

Hat jemand von euch ne Ahnung warum?

Vielen Dank für eure Hilfe.

MfG
Andy1407


----------



## eykarhorn (12. November 2008)

Ich muss diesen Thread hier hervorkramen, da ich hier exakt dasselbe Problem habe.

Gibt es zufällig jemanden der es mittlerweile gelöst hat?

Wäre sehr dankbar für einen Hinweis.

mfg


----------



## eykarhorn (13. November 2008)

So, ich habe das Problem gelöst.

Mediawiki ist per default so konfiguriert daß bei Anlegen eines neuen Users das Passwort mittels Salted Hash verschlüsselt wird. 
Man kann das Wiki aber  das Passwort mit einfachem MD5 Hash speichern lassen in dem man im Root-Dir des Wikis im File 'LocalSettings.php' folgenden Code anhängt.

```
$wgPasswordSalt = false;
```
Funktionierte erst mal und ich konnte mich mit den Usern die ich von aussen angelegt hatte im Wiki einloggen. Einfach gehashte Passwörter reichen für meinen Zweck aber nicht, weswegen ich mich durch den Wiki-Code gepflügt hab und folgendes geklaut und nachgebaut habe...

/mediawiki/includes/User.php - function crypt

```
static function crypt( $password, $salt = false ) {
		global $wgPasswordSalt;

		if($wgPasswordSalt) {
			if ( $salt === false ) {
				$salt = substr( wfGenerateToken(), 0, 8 );
			}
			return ':B:' . $salt . ':' . md5( $salt . '-' . md5( $password ) );
		} else {
			return ':A:' . md5( $password);
		}
	}
```
hier wird das Passwort erzeugt, je nachdem wie das Flag für Salted oder Nicht-Salted gesetzt wurde. Das Salt-Präpendix an sich wird mit Hilfe der Funktion wfGEnerateToken() erzeugt. Die findet man hier:
/mediawiki/includes/GlobalFunctions.php

```
function wfGenerateToken( $salt = '' ) {
 	$salt = serialize($salt);

 	return md5( mt_rand( 0, 0x7fffffff ) . $salt );
}
```
Ich hab für meine Zwecke das dann so herum zusammen gebaut...

```
$saltbase = '';
$saltbase  = serialize($saltbase);
$salt = substr((md5( mt_rand( 0, 0x7fffffff ) . $saltbase )),0,8);
$salthash = ':B:' . $salt . ':' . md5( $salt . '-' . md5( $user_password ));
```
Die Variable $salthash schreibe ich ins SQL Statement und alles ist gut. Ich kann den neuen User im Wiki einloggen und erfülle den nötigen Sicherheitsanspruch.

vl. hilfts ja mal jemandem.

mfg


----------



## TheBodo (11. Juni 2009)

Hi, hab das hier noch nich ausprobiert, aber werde ich bald tun!
Ich wollte Mediawiki schon immer mal mit Wordpress als singlelogin umsetzen!


----------

