Glad to see someone here who has done some research.
I did not see any good reason why you should not use bcrypt. In general, using bcrypt, PBKDF2, or scrypt on a server to provide a good level of security.
As always, the devil is in the details. You definitely need SSL if TLS 1.2 is possible using AES encryption. If you cannot do this, make sure that you do not allow much more than the username / password + required HTML in your connection.
You must decide on the encoding of the password character. I would recommend UTF-8, maybe narrowed down to printable ASCII characters. Either document the character encoding used, or save it somewhere in the configuration.
Try to save all the input parameters for bcrypt along with a "hashed" password. Of course, don't forget the iteration counter. This makes it easier to switch to a higher iteration counter when the user enters his password later. You need to create a secure random salt of 8-16 bytes in size to store with a password.
In addition, you can use the optional KBKDF (key-to-key) scheme to output any of the above PBKDFs. This allows the use of bcyrpt output for extra keys, etc. KBKDF works with data with sufficient entropy, so it usually takes a little time (for example, they use the KDF mode compatible with NIST SP 800-108). I think this should be considered as an "expert regime."
source share