2013-07-09 2 views
0

У меня есть веб-приложение (asp.net mvc), и мне нужно зашифровать некоторые данные, которые будут храниться в базе данных. Поскольку я использую BCrypt для пароля пользователя, я думал об использовании его, а также для шифрования других данных ... как вы думаете? Является ли BCrypt только для паролей или я могу использовать его для других данных? Или, может быть, есть лучший способ сделать это?Шифровать данные с помощью BCrypt

Заранее благодарен!

+1

Вам нужно узнать разницу между ** хэшированием ** и ** шифрованием **. – SLaks

+0

Безопасность - _hard_. Вам нужно больше узнать об этом, прежде чем вы сможете правильно использовать шифрование. В частности, где вы будете хранить ключ? – SLaks

ответ

3

BCrypt не шифрует ничего. Это алгоритм HASHING, который использует Blowfish внутренне, но фактически не шифрует ваши данные.

Основное различие:

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

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

Итак:

Прежде чем кто может ответить на ваш вопрос, вы должны сначала понять, что вы просите. Вам, по сути, нужно хранить зашифрованную информацию, или, скорее, это hashed информации? Если вам просто нужно хранить конфиденциальную информацию, но никогда не нужно возвращать исходное значение обратно пользователю, то продолжайте использовать BCrypt, так как он будет hash ваших данных (тем самым делая его нечитаемым, но все же сопоставимым). Если, с другой стороны, вы хотите хранить конфиденциальную информацию, которую вам в один прекрасный день может понадобиться кому-то (например, номер кредитной карты), а затем зайдите в sql шифрование алгоритмов.

Как вы исследуете мир безопасности, вы быстро обнаружите, что это очень болезненно, но очень важно. Например: SLaks поднимает хороший момент. Если вы зашифруете свои данные, где-то, вам нужно сохранить свой ключ. Но если этот ключ найден, тогда кто-то может украсть все ваши данные! Вы должны найти способ правильно шифровать свои данные, скрывая ключ от публики. Есть несколько способов сделать это; Google немного, прежде чем совершить сделку, так как это может быть не так безопасно, как вы думаете.

Microsoft имеет некоторые хорошие рекомендации: http://technet.microsoft.com/en-us/library/ms345262.aspx

Вы не указали, что аромат SQL вы используете, поэтому аромат конкретного ответа не может быть поставлен.

+0

Спасибо за информацию! Было очень полезно – Keoki

+0

рад это услышать :) удачи на вашем сайте! –

+0

Благодарим вас за очень четкий и хорошо сформулированный ответ. Это помогло мне +1 – Jobokai