if (N < 2 || (N & (N - 1)) != 0) {
throw new IllegalArgumentException("N must be a power of 2 greater than 1");
}
+ if (r <= 0) {
+ throw new IllegalArgumentException("Parameter r zero or negative");
+ }
+ if (p <= 0) {
+ throw new IllegalArgumentException("Parameter p zero or negative");
+ }
if (N > MAX_VALUE / 128 / r) {
throw new IllegalArgumentException("Parameter N is too large");
int N = (int) Math.pow(2, params >> 16 & 0xffff);
int r = (int) params >> 8 & 0xff;
int p = (int) params & 0xff;
+ if (r == 0 || p == 0) {
+ return false;
+ }
byte[] derived1 = SCrypt.scrypt(passwd.getBytes("UTF-8"), salt, N, r, p, 32);