SHA-256 на стороне базы данных

Я делаю мобильное приложение для сериалов. В основном, как трекер, чтобы знать, какие эпизоды смотреть и когда. И я хотел хранить информацию, такую ​​как просмотренные эпизоды, показы пользователей, в базе данных. (информация о выставках, которые я получаю от остальных API)

Так что дело в том, что я не вижу здесь необходимости в сервере, я просто не знаю, что он должен делать.

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

Так что у меня есть специальный класс в Java, который может создать такую ​​соль, и все, что мне нужно было знать, это где и как хэшировать все это. И о чем я спрашиваю. Я не хотел бы создавать сервер, который будет просто хэшировать пароли.

Еще одна вещь - как реализовать автоматический вход в систему, который я тоже хотел добавить, как только понял это.

Надеюсь, теперь стало понятнее, чего я хочу достичь здесь.

1 ответ

Похоже, вы создаете мобильное приложение, которое стоит отдельно, т.е. не общается с сервером.

Вы хотите, чтобы приложение было защищено паролем (даже если их телефон уже есть), и вы хотите сохранить этот хэшированный пароль, чтобы pwd не мог быть восстановлен, например, на потерянном, а затем укоренившемся телефоне.

SHA256 - это хороший хеш, но вам нужен действительно медленный хеш. Используйте bcrypt, PBKDF2 или scrypt.

Соль не секрет.

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

Вам не нужно хранить pwd в sqlite. Вероятно, проще просто сохранить его в текстовом файле.

Другие вопросы по тегам