My understanding from my initial reading of how BCrypt hashes passwords is that it:
- takes the raw string
- hashes it using a random salt
- appends that salt to the end of the hash (https://stackoverflow.com/a/6832628)
Then when verifying a supplied password, it:
- takes the supplied password
- retrieves the hashed password
- finds the salt from the end of the hashed password
- hashes the supplied password using the salt from the stored password
- checks whether the two are the same
My question is - if the salt is appended to the hashed password, what stops a human from a) finding it and b) potentially using it to brute-force finding a password ? Does it not negate the benefit of having a random salt rather than a known, but not stored, one?