Нужно шифрование для хранения значений в базе данных

Смотрите здесь: https://code.google.com/p/crypto-js

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

Например: "sadfjpihdsf3njdasf" преобразуется в "hello world", а "hello world" всегда преобразуется в "sadfjpihdsf3njdasf". Методы шифрования, которые я пробовал, похоже, каждый раз дают мне другую зашифрованную строку.

Целью этого является главным образом уменьшить видимость паролей, хранящихся в защищенной базе данных, поэтому уровень безопасности довольно прост.

2 ответа

Решение

Все симметричные шифры в CryptoJS могут использоваться описанным вами способом. Причина, по которой вы каждый раз видите разные значения, заключается в том, что каждый раз генерируется новый случайный IV. Вы можете создать IV самостоятельно для каждого уникального значения, которое вы видите здесь.

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

CryptoJS предоставляет хороший метод хеширования для этого случая, если вы хотите сделать это на стороне клиента или в любом месте, где JavaScript работает, потому что CryptoJS в основном не имеет зависимостей: PBKDF2

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

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

Но для реализации входа в систему нет веской причины для расшифровки пароля пользователя. Никто не должен иметь возможность восстановить пароль. Стандартная процедура заключается в "хешировании" пароля.

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

Прочитайте это внимательно https://crackstation.net/hashing-security.htm

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