2015-02-03 2 views
0

Смотрите здесь: https://code.google.com/p/crypto-jsНеобходимость шифрования для хранения значений в базе данных

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

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

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

+3

Вы никогда не должны хранить зашифрованные пароли в базе данных. Пароли должны быть солеными и сильно хэшированными, что делает их необратимыми. –

+0

Так в чем же альтернатива? Храните пароли в незашифрованном виде, чтобы любой администратор баз данных мог просто просматривать их? –

+0

Алгоритм шифрования написан таким образом, что они не могут быть дешифрованы, так что это безопасный bcrypt - хороший алгоритм. И примером реализации javascript является https://code.google.com/p/javascript-bcrypt/ –

ответ

2

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

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

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

+0

Спасибо за очень полезную информацию. Кстати, я не пользуюсь клиентской стороной CrypoJS.Я использую его в сочетании со сценарием Google Apps –

1

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

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

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

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

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

+0

Спасибо, вот что я сделал. Я использовал различные методы шифрования для передачи и наиболее безопасные для хранения. Для его решения потребовалось много тестов, но в итоге прошел обзор безопасности с летающими цветами. –

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