No implementation found to handle given hash.

Während des Updates-Prozesses einer TYPO3-Website von v8 auf v9 in unserer Internetagentur wurde der folgende Fehler erzeugt: component="TYPO3.CMS.Core.Error.ProductionExceptionHandler": Core: Exception handler (WEB): Uncaught TYPO3 Exception #1234567890: No implementation found to handle given hash. This happens if the stored hash uses a mechanism not supported by current server. Follow the wiki link to fix this issue. Mit diesem Fehler einhergehend konnten wir uns nicht im Install-Tool der Website einloggen über die URL /typo3/install.php. Die Standardverschlüsselungsmethode von TYPO3 9 ist hierbei argon2i, leider nicht verfügbar auf dem verwendeten Entwicklungsserver. Was ist also zu tun?

 

 Prinzipiell müssen wir "nur" die Verschlüsselungsmethode auf eine auf dem Server verfügbare ändern, bei uns z.B. "bcrypt". Leider reicht es nicht, dieses als className in der LocalConfiguration.php mit "TYPO3\\CMS\\Core\\Crypto\\PasswordHashing\\BcryptPasswordHash" einzutragen. Hierzu sollte man im Installationstool die Hashing Settings anpassen, also Login Installationstool, Settings -> Configuration Presets -> Password hashing settings auf „bcryt“, dann neues Installationstoll-Passwort erstellen und fertig. Ist hier natürlich nur ein bisschen schwierig, da wir uns überhaupt nicht in das Installationstool einloggen können.

 

Diese Problematik lässt sich jedoch relativ leicht umgehen, indem wir in den betreffenden Dateien, die für die Prüfung der Richtigkeit des eingegebenen Passworts verantwortlich sind, diese Prüfung temporär außer Kraft setzen. Hier ist es (die Version TYPO3 9.5.19 lässt sich hierbei natürlich mit anderen Versionen ersetzen) die Datei

 

/typo3_src-9.5.19/typo3/sysext/install/Classes/Authentication/AuthenticationService.php

 

In dieser Datei verändern wir einfach die beiden Zeilen

 

$hashInstance = $hashFactory->get($installToolPassword, 'BE');               

$validPassword = $hashInstance->checkPassword($password, $installToolPassword);

 

zu

 

// $hashInstance = $hashFactory->get($installToolPassword, 'BE');               

$validPassword = 1;

 

Danach können wir uns anmelden (die obigen Änderungen unbedingt rückgängig machen!) und die Änderungen im Install-Tool durchführen. Das war's!

Gesehen in unserer Agentur bei einem Update einer Website von TYPO3 8 auf TYPO3 9.