Existem várias razões para diferenças aqui.
- O OpenPGP é um criptosistema híbrido , combinando uma criptografia de chave pública / privada simétrica. Uma chave de sessão gerada aleatoriamente é usada para criptografar a mensagem real, e a própria chave de sessão é criptografada usando a chave pública. Como a chave de sessão é selecionada aleatoriamente cada vez que uma nova mensagem é criptografada, você receberá um novo texto criptografado cada vez que criptografar algo, não importando de STDIN ou de um arquivo.
- O "pacote de dados literais", a camada mais interna que contém a mensagem real (antes de ser compactada e criptografada) contém o nome do arquivo - ou a seqüência vazia se você criptografou a partir de STDIN.
- O pacote de dados literal mencionado acima também inclui um carimbo de data / hora, geralmente o carimbo de data / hora do arquivo criptografado ou a hora atual ao criptografar a partir de STDIN.
Todos esses pontos resultarão em criptografias muito diferentes para pequenas diferenças na entrada. Então, criptografar um segundo antes produzirá um criptografo completamente não relacionado!
- Finalmente, também os pacotes de criptografia (e, se usados, de assinatura) têm carimbos de data e hora, mas eles só alteram o timestamp individual, não o criptograma completo.