Вы действительно не должны ставить кого-то пароль BCrypt'd на провод. Несмотря на то, что BCrypt трудно грубой силой; лучше не делать проще для того, чтобы кто-то его освободил.
Я предлагаю, как user33888366, что если вам нужен токен безопасности, используйте HMAC значений в URL-адресе.
Прочтите Life in a post-database world: using crypto to avoid DB writes примеры использования криптографии, чтобы доверять вашим URL-адресам.
короткая версия
http://myapp.com/resetPassword?userId=johnnysmith&expirationTime=1356156000&token=%SECURITYHASH%
где %SecurityHash%
является в HMAC хэш:
- USERID
- Время истечения сброса
- Bcrypt хэш
Когда URL приходит его , разобрать его:
userId=johnnysmith&expirationTime=1356156000&token=%SECURITYHASH%
^^^^^^^^^^^ ^^^^^^^^^^
и пересчитать HMAC из:
- johnnysmith
- johnnysmith в Bcrypt хэш
, если он соответствует переданному маркер безопасности, вы знаете, что имеют действительный запрос.
Или использовать md5 ()? –
user3388366