Stocker les valeurs hexadécimal en binaire de MySQL

Je pensais à la façon dont je suis le stockage des mots de passe dans ma base de données : de façon appropriée salé SHA1 chaînes dans un CHAR(40) domaine. Cependant, puisque le personnage données là-bas est en fait qu'une représentation hexadécimale de 160 bits, j'ai pensé qu'il pourrait être préférable de le stocker en tant que fichier BINAIRE(20).

CREATE TABLE users (
    password BINARY(20)
    /* snip */
);

INSERT INTO users (password) VALUES (UNHEX(SHA1('mypassword'));

Comme je le vois, un avantage de cette approche est qu'il réduit de moitié la taille de ce champ, mais je peux imaginer qu'il y a probablement quelques inconvénients aussi.

Quelle est votre opinion?

Vous ne économiser quelques octets par mot de passe. Est-il utile?
c'est bien ce que je me demandais. Les avantages pourraient être mince, mais quels sont les coûts?
OK, il semble y avoir un accord général, les prestations sont à la légère et n'a pas suggéré de coûts importants. Si vous avez fait le changement, les futures sauvegardes être compatible avec les dernières sauvegardes? Tout code doit-il être changé?

OriginalL'auteur nickf | 2009-11-11