Documentação do Symfony2
Renderizada do repositório symfony-docs-pt-BR no Github

Como Escolher Dinamicamente o Algoritmo Codificador de Senha

Normalmente, o mesmo codificador de senha é usado para todos os usuários configurando-o para aplicar a todas as instâncias de uma classe específica:

Outra opção é usar um codificador “nomeado” e então selecionar qual codificador pretende utilizar de forma dinâmica.

No exemplo anterior, foi definido o algoritmo sha512 para Acme\UserBundle\Entity\User. Isso pode ser seguro o suficiente para um usuário comum, mas e se você deseja que seus administradores tenham um algoritmo mais forte, por exemplo `` bcrypt``. Isso pode ser feito com codificadores nomeados:

Isso cria um codificador nomeado harsh. Para que uma instância User utilize ele, a classe deve implementar Symfony\Component\Security\Core\Encoder\EncoderAwareInterface. A interface requer um método - getEncoderName - que deve retornar o nome do codificador que será utilizado:

// src/Acme/UserBundle/Entity/User.php
namespace Acme\UserBundle\Entity;

use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\Encoder\EncoderAwareInterface;

class User implements UserInterface, EncoderAwareInterface
{
    public function getEncoderName()
    {
        if ($this->isAdmin()) {
            return 'harsh';
        }

        return null; // use the default encoder
    }
}