我一直在使用该库,我非常喜欢它,但是从我的阅读中可以看出,PBKDF2比bcrypt或scrypt更容易受到暴力攻击。我遇到了有关adding scrypt support的问题,但似乎没有明确的答案。
理想情况下,我想简单地替换PBKDF2功能,但是我对SJCL的内部工作还不熟悉,是否知道这是可能的。
如果可以的话,我可以想象可以很容易地使用类似pure JS bcrypt的实现。
最佳答案
是的,这是可能的,但需要更多的手动工作。
首先,您需要使用scrypt编译sjcl:
./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);