Можно ли использовать bcrypt или scrypt в качестве альтернативы PBKDF2 в SJCL?

Я пользуюсь библиотекой, и она мне действительно нравится, но из того, что я прочитал, PBKDF2 немного более уязвим к атакам методом подбора, чем bcrypt или scrypt. Я сталкивался с проблемой добавления поддержки Scrypt, но четкого ответа, похоже, нет.

В идеале я хотел бы просто заменить функциональность PBKDF2, но я недостаточно знаком с внутренней работой SJCL, чтобы знать, возможно ли это.

Если бы это было возможно, вы могли бы довольно легко использовать что-то вроде этой чистой реализации JS bcrypt, как я себе представляю.

1 ответ

Решение

Да, это возможно, но требует больше ручной работы. Сначала вам нужно скомпилировать sjcl с помощью scrypt:

./configure --with-scrypt
make

Затем вам нужно будет использовать scrypt для генерации пары ключей:

var salt = sjcl.random.randomWords(2,0);
var key = sjcl.misc.scrypt(password, salt);
var encrypted = sjcl.json.encrypt(key, original);
var decrypted = sjcl.json.decrypt(key, encrypted);
Другие вопросы по тегам