Question

Je voudrais utiliser cadre de hachage mot de passe de PHP Portable pour les mots de passe de hachage. Mais je trouve que ses démos n'utilisent pas de sel pour hachant un mot de passe. Mais il utilise un sel factice pour vérifier le mot de passe que je trouve étrange et je ne comprends pas cette idée du tout,

$dummy_salt = '$2a$08$1234567890123456789012';

if (isset($dummy_salt) && strlen($hash) < 20)
        $hash = $dummy_salt;

Je me demande, si je veux utiliser la méthode de la convention que je peux générer le sel unique et le stocker pour chaque utilisateur dans ma base de données, comment puis-je utiliser le cadre de hachage de mot de passe de PHP Portable pour générer des sels?

Ceci est la fonction que j'utilise pour les mots de passe de hachage, mais on m'a dit que SHA512 a le même problème que SHA1, sage de faire confiance à l'expert comme cadre de hashing mot de passe PHP Portable,

function hash_sha512($phrase,&$salt = null)
{
    //$pepper = '!@#$%^&*()_+=-{}][;";/?<>.,';

    if ($salt == '')
    {
        $salt = substr(hash('sha512',uniqid(rand(), true).PEPPER_KEY.microtime()), 0, SALT_LENGTH);
    }
    else
    {
        $salt = substr($salt, 0, SALT_LENGTH);
    }

    return hash('sha512',$salt.PEPPER_KEY.$phrase);
}

Faites-moi savoir si vous avez une idée. Merci.

Était-ce utile?

La solution

De la phpass article lié ??à partir de cette page:

En plus du hachage réelle, phpass transparente génère des sels aléatoires quand un nouveau mot de passe ou mot de passe est haché, et il code pour le type de hachage, le sel, et le mot de passe d'étirage nombre d'itérations dans le « hachage codant pour la chaîne » qu'elle retourne. Lorsque phpass authentifie un mot de passe ou passphrase contre un hachage stocké, il De la même façon transparente et extraits utilise l'identificateur de type de hachage, la le sel, et le nombre d'itérations de la « chaîne encodant de hachage ». Ainsi, vous ne pas besoin de se soucier de salage et étirement sur votre propre - phpass prend prendre soin de ceux-ci pour vous .

... il est donc pas surprenant que les exemples n'utilisent pas le salage! Vous pouvez être trop assaisonner votre code.

L'exemple de code avec le sel factice est un exemple de la façon de prévenir une attaque de synchronisation en faisant en sorte que si un utilisateur existe ou non, la validation de l'utilisateur prend la même quantité de temps, efficace en faisant une authentification factice pour les utilisateurs non existants. Il a besoin d'un sel factice parce que si l'utilisateur n'existe pas, il ne sera pas un sel stocké à l'utilisation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top