Passwort ändern mit CakePHP und Blowfish

Ich versuche ein Formular einzurichten, damit ein Benutzer sein Passwort mit CakePHP 2.3 ändern kann. Der verwendete Algorithmus ist Blowfish. Ich habe die folgenden drei Felder:

<?php echo $this->Form->input('old_password', array('type' => 'password', 'autocomplete' => 'off')); ?>
<?php echo $this->Form->input('new_password', array('type' => 'password', 'autocomplete' => 'off')); ?>
<?php echo $this->Form->input('new_password_confirm', array('type' => 'password', 'autocomplete' => 'off', 'label' => 'Confirm Password')); ?>

Hier ist der Code, mit dem ich versuche, zu überprüfen, ob sie ihr altes Passwort korrekt eingegeben haben:

$hash = Security::hash($this->request->data['User']['old_password'], 'blowfish');
$correct = $this->User->find('first', array(
    'conditions' => array(
        'User.id' => AuthComponent::user('id'),
        'User.password' => $hash
    ),
    'fields' => array('id')
));

Das Problem ist, dass Cake den Benutzer nie findet, obwohl ich das alte Passwort richtig eingebe, weil es nicht den richtigen Hash zu berechnen scheint. Jedes Mal, wenn ich das Formular mit demselben alten Passwort abschicke, generiert Cake jedes Mal einen anderen Hash. Dies liegt wahrscheinlich an meinem Unverständnis darüber, wie der Blowfish / Bcrypt-Algorithmus funktioniert, aber ich kann es nicht herausfinden.

Was vermisse ich hier?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage