In the method crypt_raw you are calculating the rounds with: int rounds = 1 << log_rounds; Java's int is a signed type, meaning a 1 << 31 will cause it to flip to -2147483648 Hence this loop further down will not run at all: for (i = 0; i < rounds; i++) { key(password); key(salt); } rounds needs to be of type long if 31 is supposed to be a valid parameter!
Forgot something! The line needs to be long rounds = 1l << log_rounds;
jBCrypt is not longer in this bugtracker
closing bugs resolved before openssh-8.9