Я думал о том, как я храню пароли в своей базе данных: правильно соленые строки SHA1 в поле CHAR (40). Однако, поскольку символьные данные в них фактически представляют собой шестнадцатеричное представление 160-битного числа, я подумал, что лучше сохранить его как BINARY (20).
CREATE TABLE users (
password BINARY(20)
/* snip */
);
INSERT INTO users (password) VALUES (UNHEX(SHA1('mypassword'));
Как я вижу, одним из преимуществ этого подхода является то, что он уменьшает размер этого поля, но я могу представить, что, возможно, есть и некоторые недостатки.
Каково ваше мнение?