Как мне хэшировать строку, используя C #?
Взгляните сюда:
http://support.microsoft.com/kb/307020
Каким будет тип объявления поля в MSSQL? NVARCHAR (64)?
Это двоичные данные. Возможно, вы захотите отформатировать его как строку, но это «дополнительная работа»
Что такое соление, и мне нужно сохранить это где-нибудь в моей базе данных?
Вы должны использовать уникальную соль для каждой записи. Соль в том, чтобы было невозможно узнать, использовался ли 2 раза один и тот же пароль. как правило, планка состоит из 2 компонентов ... «общего секрета» (должен быть достаточно сложным, чтобы обойти списки поиска) и уникальной части (например, значение идентификатора пользователя в БД или что-то еще) ... Просто убедитесь, что «общий» + «уникальный» + пароль уникален
Если я собираюсь позволить людям использовать Facebook Connect, нужно ли мне беспокоиться о создании хеша / соли?
Если вы можете использовать сторонний API, вам не нужно заботиться о хешировании. Пока вы не сохраняете пароли, нет необходимости хешировать. Хеширование является односторонней функцией, поэтому нет «хорошего» способа (Подсказка: Радужные таблицы) для восстановления исходного пароля. Если вы позволите Facebook обрабатывать аутентификацию, вам не придется беспокоиться обо всей этой базовой сантехнике, поскольку вы не храните пароли.
Хеширование используется, если вы хотите, чтобы некоторая информация была настолько защищенной, чтобы даже тот, кто украл вашу БД, не мог получить к ней доступ. КСТАТИ: Это включает в себя себя ... Нет способа восстановить исходный пароль ...