Isso é explicado em detalhes na página cryptsetup man em NOTES ON PASSPHRASE PROCESSING FOR LUKS . Existem diferenças, como incluir novas linhas ou não, limites de tamanho diferentes (por exemplo, 512 bytes para senhas interativas, verificar cryptsetup --help ), ...
Se você quiser evitar este incômodo em particular, é melhor criar arquivos de chave que também funcionem ao digitá-los no terminal no prompt interativo cryptsetup. Isso significa que o arquivo de chave deve ser uma cadeia de texto simples e NÃO deve incluir um caractere de nova linha no final. (Use echo -n ou printf "%s" .)
Por exemplo, você pode usar pwgen para gerar uma senha de 64 caracteres keyfile.txt que também pode ser digitada manualmente em uma emergência:
$ echo -n $(pwgen 64 1) | tee keyfile.txt
Aish6shaejongi9yug3quij7aijop7SieTh7ierahngaem8iov5isho5dae0pisu
Com um arquivo-chave como este, não deve haver diferença na interpretação, independentemente de como você o passa para cryptsetup . A exceção é usar o layout de teclado incorreto ao digitá-lo. Se você espera problemas de layout de teclado, você pode adicionar a senha duas vezes para que o LUKS aceite qualquer um deles.
Isso é particularmente importante ao usar /dev/urandom keyfiles ... se você usá-los da maneira errada, pode ter parado de processar antecipadamente (um caractere aleatório de nova linha aparece) e sua senha é muito mais curta do que você acredita ser.