Alterando a senha com o CakePHP e o blowfish

Estou tentando configurar um formulário para permitir que um usuário altere sua senha usando o CakePHP 2.3. O algoritmo usado é o blowfish. Eu tenho os seguintes três campos:

<?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')); ?>

Aqui está o código em que estou tentando verificar se eles digitaram a senha antiga corretamente:

$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')
));

O problema é que, mesmo que eu digite a senha antiga corretamente, o Cake nunca encontra o usuário porque ele não parece estar calculando o hash correto. Cada vez que envio o formulário com a mesma senha antiga, o Cake gera um hash diferente a cada vez. Isso é provavelmente devido à minha falta de compreensão de como o algoritmo blowfish / bcrypt funciona, mas não consigo entender.

O que estou perdendo aqui?

questionAnswers(2)

yourAnswerToTheQuestion