Estoy revisando los hashes del archivo usando varios algoritmos diferentes en powershell. Cuando uso MacTripleDes, siempre obtengo diferentes hashes. Todos los demás, como SHA256 o MD5 siempre dan respuestas confiables. Es posible que pueda replicar el problema en su propia computadora:
"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
Obtengo los mismos valores hash para los dos primeros hashes, pero valores diferentes para los dos segundos hashes. ¿Se supone que MacTripleDes se usa de manera 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
powershell
hash
usuario6722022
fuente
fuente
Get-FileHash
cmdlet no parece admitir un parámetro clave.Respuestas:
MACTripleDES es diferente de los otros algoritmos que ofrece el
Get-FileHash
cmdlet. No estoy seguro de por qué se incluyó en el cmdlet, para ser honesto. No encaja con los demás, en mi opinión.SHA1, SHA256, MD5, RIPEMD, etc., esas son todas funciones hash regulares. Toman algunos datos de longitud arbitraria y crean un resumen de longitud fija que representa esos datos. Sin embargo, MACTripleDES es diferente, ya que no es solo un algoritmo hash. Tiene TripleDES en el nombre y 3DES es un algoritmo de cifrado, no un algoritmo de hash. La mayor diferencia entre las funciones hash y las funciones de cifrado es que el cifrado se puede revertir con una clave. Los hashes son funciones unidireccionales.
Y MAC significa código de autenticación de mensaje. Es un código que se usa para autenticar un mensaje. Para verificar que no haya sido alterado. Los MAC están diseñados para ser efímeros o únicos de un mensaje a otro.
Revisa al constructor :
StaticRandomNumberGenerator genera números aleatorios ... números aleatorios significa que el resultado será diferente en cada ejecución.
fuente
KeyedHashAlgorithm
objeto. Pero tampoco hay forma de hacerlo conGet-FileHash
...Get-FileHash
no le permite especificar la clave a usar y en su lugar genera una clave aleatoria que nunca expone al usuario, eso parece ser un error (según el título original de la pregunta) ya que no puede usar para cualquier cosa (No es que entienda por qué elegirías MACTripleDES en primer lugar si quisieras un MAC.)Get-FileHash
debería ser alguna forma de RNG contorneado?