Зачем конвертировать SHA1 в base64 перед сохранением? - PullRequest
2 голосов
/ 06 ноября 2011

Мне нужно хранить пароли в моей базе данных SQL. Слишком высокий уровень безопасности в данный момент не требуется, но вместо использования хэша MD5 с начальным значением я планирую использовать начальное значение SHA1 + для хранения своих паролей.

Использование будет просто для входа пользователя веб-сайта. Поэтому, когда пользователь входит в систему, мой код C # соединяет соль + пароль, хэширует его и затем сравнивает с тем, что хранится в базе данных.

Мой вопрос заключается в том, что на сервере SQL я должен хранить SHA1 как есть (40 символов) или после преобразования их в Base64 (28 символов)?

Большая часть примера хэширования SHA1, который я видел в Интернете, похоже, наконец-то преобразовывает его в Base64, но я не уверен, почему или что будет выгодно для хранения SHA1 после кодирования в Base64.

Ответы [ 2 ]

4 голосов
/ 06 ноября 2011

SHA-1 хеш - 160-битное значение;Решения хеширования будут выдавать 20 байтов, включая непечатаемые символы.Большинство реализаций преобразуют это в читаемый формат перед хранением, либо в шестнадцатеричный (40 байт), либо в base64 (~ 28 символов).

Нет смысла преобразовывать шестнадцатеричную строку в base64 перед хранением, поэтому если ваши строкиуже в шестнадцатеричном, просто оставьте их таким.

1 голос
/ 06 ноября 2011

Ответ Криса Хилда объясняет некоторые детали, но не дает конкретного ответа на ваш вопрос.

Весь смысл хеширования пароля в первую очередь состоит в том, чтобы сделать его неуязвимым, неузнаваемым и нечитаемым.Тогда нет причины преобразовывать его обратно в base64, чтобы снова сделать его читаемым.Причина, по которой многие реализации делают это, главным образом из-за наборов символов и кодировок.При использовании простых наборов символов на основе ASCII реализации могут незначительно отличаться для разных баз данных и языков программирования, что может привести к потере или изменению данных при хранении и извлечении и, следовательно, поэтому специальный (необычный) символ в 1 наборе символов может не существовать в другом символеустановлен.

...