Eu encontrei a resposta. A saída de
$ echo -n "test" | sha256sum
é a representação hexadecimal do hash. sha256sum
não tem uma opção para saída bruta (binária). Este comando funciona:
$ echo -n "test" | openssl dgst -binary -sha256 | base64