MACTripleDES é diferente dos outros algoritmos oferecidos pelo cmdlet Get-FileHash
. Não sei por que ele foi incluído no cmdlet, para ser honesto. Não se encaixa com os outros, IMO.
SHA1, SHA256, MD5, RIPEMD, etc., são todas funções hash regulares. Eles pegam alguns dados de comprimento arbitrário e criam um resumo do comprimento fixo que representa esses dados. O MACTripleDES é diferente, pois não é apenas um algoritmo hash. Tem TripleDES no nome, e 3DES é um algoritmo de criptografia, não um algoritmo de hash. A maior diferença entre funções hash e funções de criptografia é que a criptografia pode ser revertida com uma chave. Hashes são funções unidirecionais.
E MAC significa código de autenticação de mensagem. É um código usado para autenticar uma mensagem. Para verificar se não foi adulterado. Os MACs são projetados para serem efêmeros ou exclusivos de uma mensagem para outra.
Confira o construtor :
public MACTripleDES() {
KeyValue = new byte[24];
Utils.StaticRandomNumberGenerator.GetBytes(KeyValue);
// Create a TripleDES encryptor
des = TripleDES.Create();
HashSizeValue = des.BlockSize;
m_bytesPerBlock = des.BlockSize/m_bitsPerByte;
// By definition, MAC-CBC-3DES takes an IV=0. C# zero-inits arrays,
// so all we have to do here is define it.
des.IV = new byte[m_bytesPerBlock];
des.Padding = PaddingMode.Zeros;
...
StaticRandomNumberGenerator gera números aleatórios ... números aleatórios significam que o resultado será diferente a cada execução.