diff --git a/src/main.js b/src/main.js --- a/src/main.js +++ b/src/main.js @@ -4,6 +4,7 @@ import {pbkdf2} from "./pbkdf2.js"; import {Chacha20,encrypt as _encrypt,decrypt as _decrypt} from "./chacha.js"; const VERSION=1; +const MAX_ITERS=24; function encrypt(s,password){ let bs=util.str2utf8(s); @@ -25,10 +26,12 @@ function decrypt(s,password){ let salt=arr.slice(18,30); let ciphertext=arr.slice(30); + if(ciphertext.length==0){return 4;} + if(version>VERSION){return 2;} + if(iters>MAX_ITERS){return 3;} let key=pbkdf2(pass,salt,1<b===check[i])){return 1;} - if(version>VERSION){return 2;} let plainbytes=_decrypt(ciphertext,key,salt); return util.utf82str(plainbytes); } @@ -36,7 +39,7 @@ function decrypt(s,password){ function stretchKey(password,salt){ let start=Date.now(); // ms let i,key; - for(i=0;i<52;i++){ + for(i=0;i<=MAX_ITERS;i++){ key=pbkdf2(password,salt,1<=500){break;} }