Я хожу по книге Майкла Хартла (офигенно, бесплатный ресурс, кстати, спасибо, Майкл!), И у меня есть вопрос о подсоле и хешировании паролей.Смысл присвоения пароля состоит в том, чтобы предотвратить хакерскую атаку «радуга», которая, если я правильно понимаю, по сути является атакой грубой силы, если хакер может угадать тип используемого шифрования.Чтобы предотвратить такой тип атаки, соль используется для рандомизации пароля до его шифрования, но эта соль должна храниться вместе с зашифрованным паролем?Если это так, то если хакер может получить доступ к базе данных и получить зашифрованный пароль, то не может ли он также извлечь соль и продолжить свою радужную атаку?
Вот пример кода Майкла процесса ...
>> Time.now.utc
=> Fri Jan 29 18:11:27 UTC 2010
>> password = "secret"
=> "secret"
>> salt = secure_hash("#{Time.now.utc}--#{password}")
=> "d1a3eb8c9aab32ec19cfda810d2ab351873b5dca4e16e7f57b3c1932113314c8"
>> encrypted_password = secure_hash("#{salt}--#{password}")
=> "69a98a49b7fd103058639be84fb88c19c998c8ad3639cfc5deb458018561c847"
Большое спасибо!