Si votre application ne calcule md5 que lorsque quelqu'un s'inscrit sur votre site, ou se connecte, posséderez-vous de nombreux appels vers md5 ferez-vous par heure ? Quelques centaines ? Si oui, je ne pense pas que le vraiment petit différence entre PHP et MySQL sera significative du tout.
La question devrait ressembler davantage à "où dois-je mettre le fait que les mots de passe sont stockés à l'aide de md5" que "qu'est-ce qui me fait gagner presque rien".
Et, en passant, une autre question pourrait être :où pouvez-vous vous permettre de dépenser des ressources pour ce genre de calculs ? Si vous avez 10 serveurs PHP et un serveur de base de données déjà sous forte charge, vous obtenez votre réponse;-)
Mais juste pour le fun :
mysql> select benchmark(1000000, md5('test'));
+---------------------------------+
| benchmark(1000000, md5('test')) |
+---------------------------------+
| 0 |
+---------------------------------+
1 row in set (2.24 sec)
Et en PHP :
$before = microtime(true);
for ($i=0 ; $i<1000000 ; $i++) {
$a = md5('test');
}
$after = microtime(true);
echo ($after-$before) . "\n";
donne :
$ php ~/developpement/tests/temp/temp.php
3.3341760635376
Mais vous ne calculerez probablement pas un million de md5 comme ça, n'est-ce pas ?
(Et cela n'a rien à voir avec la prévention des injections SQL :il suffit d'échapper/de citer vos données ! toujours ! ou d'utiliser des instructions préparées)