J'étais ici hier et j'ai eu de très bonnes réponses. J'ai pris ce que j'ai obtenu et mis ensemble, ce que je pense sera un algorithme assez sécurisé. J'ai un problème en utilisant blowfish avec une boucle for qui génère le sel. J'utilise des caractères de base64 et une boucle for pour obtenir une chaîne aléatoire. Je veux prendre cette chaîne générée et l'insérer dans la fonction crypt comme le sel. Parce que la documentation sur blowfish est si parcimonieuse et que les docs PHP ne la mentionnent pas vraiment, je suis en train de poignarder dans le noir ici.PHP crypte et sel - plus de clarification s'il vous plaît
La chose vraiment étrange est que si vous exécutez ce code comme il est maintenant, il va pas échouer. Enlevez soit '$ 2a $ 07 $' au-dessus de la boucle for ou de la fonction crypt et retournent par intermittence une chaîne cryptée. Ma compréhension de blowfish est que la chaîne chiffrée doit commencer par '$ 2a $ 07 $' et se terminer par "$ 'd'où la concaténation dans la fonction crypt.Je n'ai vraiment pas besoin de la chaîne de début au-dessus de la boucle for et je voulais pour se débarrasser de celui-ci.
Je voudrais également des précisions sur les meilleures pratiques sur le stockage du sel aléatoire, soit dans la base de données ou en stockant la sortie de la fonction crypte dans la base de données?
Hier, Il n'y avait pas de vrai code, juste une discussion, je voudrais mettre du code ensemble aujourd'hui et avoir quelque chose qui est assez sûr en place Si quelqu'un peut trouver un meilleur algorithme, je suis toujours ope n.
$base64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/';
$salt = '$2a$07$';
for($i=0; $i<60; $i++)
{
$salt .= $base64[rand(0,63)];
}
return crypt('password', '$2a$07$'.$salt.'$');
Vous ajoutez 2 $ à $ 07 $ 'deux fois la valeur du sel, est-ce intentionnel? – meagar
Oui. C'est pourquoi je poste. Si vous supprimez l'une de ces chaînes, la fonction crypt retournera une chaîne cryptée de manière aléatoire. Je voudrais enlever la chaîne au-dessus de la boucle for et garder la chaîne dans la fonction crypt. Lorsque je l'enlève, la fonction crypt échoue. – timmay
Si vous exécutez ce code tel qu'il est, il n'échouera pas. Retirez l'une de ces chaînes $ 2a $ 07 $ et elle échoue. – timmay