2010-12-16 1 views
1

У нас есть служба проверки подлинности wcf и .net C# CAB-клиент. Служба отвечает за сохранение и проверку хэшей паролей пользователей. Также требуется, чтобы хеши сохранялись в читаемом формате. Кроме того, нам нужно будет отправить хеши от клиента к службе для проверки. Так использует кодировку Base64 для хранения и передачи хороший выбор? каковы преимущества и недостатки использования этого и другого кодирования?Что такое хорошая кодировка для хранения хэшей паролей в БД или их передачи в сети

+0

Задать вопрос Gawker Media :) – Marcie 2010-12-16 23:32:24

ответ

1

Вам нужно что-то, что может кодировать произвольные октеты, а не то, что просто кодирует текст (например, некоторые некоторые шаблоны недействительны в UTF-16).

Так на самом деле два варианта для кодирования двоичного в виде текста:

  • Base 64
  • Hex

Как шестигранной нужны два текстовых символов для каждого октета, в то время как base64 требуется около 1,3, выбор будет base64, если нет причин для этого.

0

Хешируйте пароль с помощью SHA512 вместе с уникальной солью для каждого пользователя, затем либо кодировку Base64, либо шестнадцатеричный код (каждый байт ввода становится шестизначным значением этого байта).

Хеши являются односторонними функциями. Как только он хеширован, вы никогда не сможете вернуть исходный пароль. Но это нормально, потому что вы только когда-либо храните хешированный пароль, поэтому, чтобы проверить, правильно ли кто-то ввел свой пароль, вы повторно используете хэш и сравниваете хешированные версии.

+0

Вопрос о отправке паролей хэшей ... – Richard 2010-12-16 22:23:15

+0

Вы правы, я пропустил это в первый раз и беспокоился – 2010-12-16 22:27:42

0

Base64 является стандартным и хорошо известным способом кодирования двоичных данных. Это хорошо подходит для ваших требований.

Если вам нужно отправить это значение в Urls часто с использованием модифицированной кодировки Base64 (http://en.wikipedia.org/wiki/Base64#URL_applications), либо Base32 может работать лучше.