2013-02-21 9 views
1

У меня есть поле пароля для пользователя, что при его сохранении в базе данных пароль зашифровывается.C# Зашифрованный пароль

Кроме того, если я хочу изменить пользователя, поле пароля будет хешировано.

Но хешированное поле содержит сотни символов, из-за длины шифрования.

Есть ли способ показать, может быть, всего 8 символов?

Это то, что отображается после сохранения, что не является идеальным.

encrypt

+1

Вы показываете пароль? Пользователю? –

+1

Всего 8 символов чего? –

+0

Я показываю поле пароля, чтобы его можно было изменить, а может быть, только 8 хэшированных значков. –

ответ

1

Разве вы не можете сделать отдельную опцию для изменения пароля и в поле редактирования пользовательского пароля шоу что-то вроде *********. И если во время редактирования вы вводите что-то новое в поле пароля, а затем перейдите через шифрование.

+0

, если он хранит только хэши паролей (и так должно быть в реальных приложениях), не будет возможности «дешифровать» пароль из хэша – Woodman

+0

@Woodman благодарит, обновил ответ. – Sinatr

0

Есть несколько вещей, которые беспокоят меня здесь, одним из которых является то, что, как отмечает РБ в комментариях, вы используете термины Encryption and Hashing взаимозаменяемо. Разница очень важна. Проще говоря,

  • Шифрования, когда вы что-то неясное таким образом, что можно повернуть вспять. Пример (плохой пример), подставляя букву А номером 1, буквой В с номером 2 и т. Д. «Привет» станет «7 5 12 12 15», который будет казаться бессмысленным для кого-то без ключа, но может быть обратимым, если вы знаете, как это сделать.
  • Hash - это односторонняя математическая функция, которая принимает вход и превращает его в уникальную часть кажущегося бессмысленного выхода. Проще говоря, вы можете в значительной степени предположить, что каждая уникальная информация, которая попадает в хэш, выйдет как уникальное значение. Но, учитывая этот уникальный выход, нет возможности отменить его и узнать, что такое вход.

Чтобы расширить далее, если бы я создавал веб-сайт, на котором пользователь просил зарегистрироваться, я бы взял пароль, который они выбрали, я бы тогда хэшировал этот пароль, а затем сохранил этот пароль где-то в безопасности , Затем я выброшу пароль, который пользователь ввел. В следующий раз, когда пользователь придет на мой сайт, они будут вводить свой пароль, который я бы снова сделал хэш, я бы затем проверил этот хэш-результат против того, что я сохранил ранее, и поскольку одно и то же слово всегда будет выдавать тот же результат, если два хеши совпадают Я бы предоставил доступ к моему сайту.

Я также хотел бы попросить вас узнать о соления паролей (more on which can be found at Wikipedia), который в наши дни является обязательным.

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

Лучшее, что вы могли бы сделать, это оставить поле пароля на экране редактирования вашего пользователя пустым.Если MVC автопопуляцией, то для вас это говорит мне, что вы должны изменить имя поля ввода на то, что не связано с вашим базовым объектом. Подробнее о безопасности в MVC можно найти на Microsoft's asp.net website.

 Смежные вопросы

  • Нет связанных вопросов^_^