2011-01-28 4 views
0

Если я не ошибаюсь, если вы хотите зашифровать содержимое в базе данных, вы будете использовать md5. Я использую это прямо сейчас для паролей. Но теперь я хочу добавить шифрование ко всей личной информации и т. Д. Для корпоративных клиентов. Ниже приведены мои вопросы:Шифрование содержимого базы данных

  1. Если я md5 все, будет ли отображаться на дисплее обычным способом, как без md5?

  2. Когда я разрешаю редактировать содержимое, мне нужно будет отображать информацию без md5, а затем добавить md5 при отправке, правильно?

  3. Если кто-то получает доступ к базе данных, они будут видеть только md5. Но если они загружают его, а затем удаляют md5, разве они не будут видеть всю информацию?

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

Спасибо.

+5

md5 - это хэш или дайджест. Не шифрование. Его нельзя (легко) отменить. http://en.wikipedia.org/wiki/MD5 –

ответ

9

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

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

+0

Спасибо Адаму. Каков наилучший способ шифрования? – AAA

+1

Для хранения базы данных обычно используется симметричный алгоритм шифрования, такой как AES. –

2

Если я md5 все, будет ли отображаться все нормально, как без md5?

Nope. Все будет переварить md5. Исходные данные (почти) невозможно восстановить из дайджеста.

Когда я разрешаю редактирование контента, мне нужно будет отображать информацию без md5, а затем добавить md5 при отправке, правильно?

Поскольку md5 digest не может (легко) быть декодирован в исходные данные, вы должны где-то сохранить исходную информацию.

Если кто-то получает доступ к базе данных, они будут видеть только md5. Но если они загружают его, а затем удаляют md5, разве они не будут видеть всю информацию?

Nope.Сборник md5 не может (легко) быть отменен для восстановления любой из исходной информации.

+1

Невозможно выполнить 100% -ный разворот алгоритма MD5 (или любого алгоритма хэширования), поскольку есть несколько потенциальных входов, которые будут выдавать один и тот же результат. Контекст может определить, что может быть допустимым вводом, но как алгоритм * общего *, это законно невозможно. –

+0

Спасибо С.Лотт. Каков наилучший способ шифрования? – AAA

+1

@AAA: Это отдельный вопрос. Шаг 1. Ищите базу данных Шифрование. Шаг 2: ПРОЧИТАЙТЕ ответы. Шаг 3: СПРОСИТЕ для уточнения ** КОНКРЕТНЫХ ** вещей, которые вас путают. Пожалуйста, не предполагайте и не делайте больше поиска. –

2

Насколько мне известно, MD5, как известно, на самом деле не является надежной функцией хэширования в наши дни. Есть места в Интернете, предлагающие обратные MD5-сервисы, где они собирают огромную базу данных строк с их эквивалентом MD5. Попробуйте использовать что-то вроде SHA-512 и используйте такие методы, как итеративное хеширование, чтобы сделать его более безопасным. PHP имеет библиотеку crypt(), которую вы, возможно, хотели бы проверить, или, возможно, использовать шифрование базы данных SQLite.

1

MD5 - односторонняя хеширующая функция. Он не будет расшифрован. Просто ОБЕСПЕЧЕН.

+1

хэширование вообще не шифрование. –

3

MD5 - функция хеширования! Это односторонняя функция. Вы не можете декодировать хэш MD5!

Если вы кодируете контент с MD5, вы теряете данные !!! Вместо этого используйте 3DES, BLOWFISH или другие методы шифрования!

Зависит от DB к DB. Более или менее каждый db имеет модуль подписки для использования (и оплаты)

+2

Говоря, что вы не можете декодировать хеш MD5, может быть опасным утверждением. Для администратора это означает, что они не могут вернуть свои данные, потому что это не шифрование. Однако это также означает, что их данные безопасны, потому что никто другой не может отменить исходные данные с учетом хэша, что не совсем так. Хотя есть несколько наборов данных, которые все приводят к одному и тому же MD5-хешу, если у меня есть хеш-код MD5 вашего пароля, я могу запустить этот хэш против базы данных столкновений MD5 и посмотреть, какие наиболее вероятные (очень немногие) кандидаты. Затем я просто просматриваю список, пока не найду ваш реальный пароль. – John

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