const blockSize … // Key derives a key from the password, salt and rounds count, returning a // []byte of length keyLen that can be used as cryptographic key. func Key(password, salt []byte, rounds, keyLen int) ([]byte, error) { … } var magic … func bcryptHash(out, shapass, shasalt []byte) { … }