2013-12-20 2 views
3

На этот вопрос уже был дан ответ в this Stack Overflow question, но он не является специфичным для Grails, а также нечетким.Конвертировать хеширование паролей с SHA на bcrypt

Я установил приложение Grails с помощью Spring Security, но, по-видимому, не получил самую новую версию, потому что он по умолчанию использовал SHA-256 вместо bcrypt. Теперь у меня есть данные о производстве с паролями, хешированными тем, что кажется менее идеальным.

Это кусок пирога, чтобы включить Bcrypt хэширования:

Config.groovy > grails.plugins.springsecurity.password.algorithm = 'bcrypt' 

, но теперь мне нужно приложение, чтобы преобразовать старые хэшей в новые. По сути, я понимаю, что когда пользователь входит в систему, у меня должна быть проверка приложения, чтобы узнать, является ли пароль хэшем SHA-256, и если да, повторите хеширование введенного пароля с помощью bcrypt. Через некоторое время все они будут обновлены и этот код можно будет удалить.

Каков фактический код для определения того, является ли хэш пароля с SHA-256 или bcrypt?

EDIT

То есть, что фактическая функция, которую я называю, чтобы получить хэш? Как мне сделать bcrypt(incomingpassword), чтобы узнать, соответствует ли он существующим хэшам пароля?

ответ

6

пароли bcrypt начинаются с «$ 2a $ 10 $» и имеют длину 60 символов. Для SHA-256 шаблона нет, но он будет длиннее 64 символа.

+0

Спасибо, Берт. Тем не менее, у меня все еще есть одна и та же проблема; Я понятия не имею, как создать экземпляр и вызвать произвольный пароль. Я ворвался в внутреннюю среду Spring Security, но на данный момент он быстро выходит за рамки моей способности понимать. Если я хочу пойти 'user.hashedPassword == bcrypt (incomingPassword)' ... что я на самом деле набираю вместо «bcrypt»? –

+6

Я думал, что это было интересно и хорошо документировать, поэтому я работал над записью об осуществлении и блоге здесь: http://burtbeckwith.com/blog/?p=2017 –

+0

Whoa, sweet! Благодаря! –

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