O Nginx aceita hash bcrypt no .htpasswd?
Não. O módulo `ngx_http_auth_basic` do Nginx usa a função `crypt()` do sistema, que não sabe interpretar o prefixo `$2y$` do bcrypt; um arquivo bcrypt apontado para o Nginx falha a autenticação de todas as contas. Gere apr1 para servidores Nginx.
HTTP Basic Auth é seguro sem HTTPS?
Não. O cabeçalho `Authorization: Basic` só codifica usuário e senha em base64, uma transformação reversível sem nenhuma chave; qualquer um que intercepte a requisição decodifica a senha em uma linha. A RFC 7617 pressupõe TLS por baixo para que o esquema tenha algum valor prático.
Quantas rodadas de hashing o apr1 usa?
Mil rodadas de MD5 encadeado sobre a senha, o sal e a própria senha novamente, um estiramento fixo definido pelo próprio Apache; é mais lento que um MD5 simples, mas ainda muito mais rápido de quebrar por força bruta do que bcrypt com fator de custo 10 ou maior.
Por que duas contas com a mesma senha têm hashes diferentes em apr1 e bcrypt, mas iguais em SHA?
Porque apr1 e bcrypt geram um sal aleatório novo a cada execução e o misturam no cálculo, então o mesmo texto produz saídas diferentes; o esquema `{SHA}` deste gerador não usa sal nenhum, então a mesma senha sempre vira o mesmo hash, permitindo comparação direta entre contas e ataque por tabela pré-computada.