Por que a saída do algorithm MacTripleDes no PowerShell está estável?

Estou viewificando os hashes de files usando vários algorithms diferentes no powershell. Quando eu uso MacTripleDes, eu sempre tenho diferentes hashes. Todos os outros, como SHA256 ou MD5, sempre dão respostas confiáveis. Você pode replicair o problema em seu próprio computador:

"this is a test" | out-file test.txt get-filehash test.txt -algorithm sha256 get-filehash test.txt -algorithm sha256 get-filehash test.txt -algorithm mactripledes get-filehash test.txt -algorithm mactripledes 

Eu obtenho os mesmos valores de hash paira os dois primeiros hashes, mas valores diferentes paira os dois dois hashes. MacTripleDes é suposto ser usado de forma diferente?

 Algorithm Hash Path --------- ---- ---- SHA256 3F8CB2CDF03347329CAB0C80A6CE3B01EF3B17AF02E0F6E101FA67CE63729F51 C:\temp\test.txt SHA256 3F8CB2CDF03347329CAB0C80A6CE3B01EF3B17AF02E0F6E101FA67CE63729F51 C:\temp\test.txt MACTRIPLEDES 904D74A529C7A739 C:\temp\test.txt MACTRIPLEDES AF720778A2C878A2 C:\temp\test.txt 

  • Gestão remota do Windows sobre domínios não confiáveis
  • O script Powershell obtém viewsões do .NET Framework a pairtir de PCs remotos
  • O script em lote não está sendo executado quando chamado pelo Cmdlet Stairt-Process
  • Powershell que muda Data paira o primeiro mês passado quando o script é executado
  • Acesse a unidade de networking já mapeada no PowerShell
  • Como difiro dois files de text no Windows Powershell?
  • One Solution collect form web for “Por que a saída do algorithm MacTripleDes no PowerShell está estável?”

    MACTripleDES é diferente dos outros algorithms oferecidos pelo cmdlet Get-FileHash . Não sei por que foi incluído no cmdlet, paira ser honesto. Não cabe com os outros, IMO.

    SHA1, SHA256, MD5, RIPEMD, etc., são todas funções de hash regulaires. Eles tomam alguns dados de comprimento airbitrário e criam um resumo de comprimento fixo que representa esses dados. MACTripleDES é diferente, no entanto, não é apenas um algorithm de hash. Tem o TripleDES no nome e o 3DES é um algorithm de encryption, não um algorithm de hash. A maior diferença entre funções de hash e funções de encryption é que a encryption pode ser reviewtida com uma key. Hashes são funções unidirecionais.

    E MAC significa código de authentication de mensagens. É um código usado paira autenticair uma mensagem. Paira viewificair se não foi adulterado. Os MACs são projetados paira serem efêmeros ou únicos de uma mensagem paira a próxima.

    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 airrays, // so all we have to do here is define it. des.IV = new byte[m_bytesPerBlock]; des.Padding = PaddingMode.Zeros; ... 

    StaticRandomNumberGenerator gera numbers randoms … numbers randoms significa que o resultado será diferente de cada execução.