Para verificar el sha1 de un archivo que usaría, openssl sha1 <file>
no estoy seguro de qué usar para verificar el hash sha256 del archivo, sin embargo, ¿qué recomendaría?
macos
command-line
encryption
erikvold
fuente
fuente
OS X se envía con un comando shasum .
Puedes usar:
Más detalles:
fuente
which shashum
no produce nada/usr/bin
con cosas opcionales. Tendré que verificar que este sea el caso más tarde hoy. Actualizará la respuesta si realmente vino de la instalación de XCL.shasum
devuelve un hash diferente queopenssl sha -sha256 <file>
(siendo este último el hash correcto). ¿Alguna idea de por qué?shasum
es un script perl que se usaDigest::SHA
para calcular el valor hash. Para el mismo archivo obtengo exactamente el mismo SHA usandoshasum
oopenssl
para unSHA-256
cálculo hash. Ver: gist.github.com/ianchesal/82a064b8971eb5e717ce84f3ded6dbfdEl
shasum
comando se envía con OSX por un tiempo ahora. Dará el mismo resultado queopenssl sha -sha256
cuandoshasum
usa la-a 256
opción.fuente
Para aclarar la útil respuesta de @ John, que le permite comparar un hash dado con su archivo en un solo comando:
Ingrese
shasum -a 256 -c <<<
,seguido de un espacio opcional,
seguido de una sola marca (
'
),seguido del hash para comparar,
seguido de un espacio,
seguido de un carácter de modo, en función de cómo se generó el hash inicial:
nada , si el hash se creó con
-t
o sin opción (modo de texto, que es el predeterminado)asterisco (
*
), si el hash se creó con-b
(modo binario)signo de interrogación (
?
), si el hash se creó con-p
(modo portátil)caret (
^
), si el hash se creó con-0
(modo bits)seguido de la ruta al archivo,
seguido de un único tic de cierre (
'
).Al igual que el siguiente desglose, con delimitación de elementos parecidos alrededor de las partes hash y ruta de archivo, y corchetes alrededor de la parte opcional "carácter de modo". ( No incluya los paréntesis ni los corchetes en la vida real, ¡solo están aquí para hacer que las piezas sean fáciles de ver! )
Desglosado :
El comando shasum real es
shasum -a 256 -c
-a 256
le diceshasum
que use sha256 .-c
le diceshasum
a "verificar" la entrada proporcionada.El
<<<
es un juego de caracteres especiales de Unix / Linux, llamado operador de "redirección". Es para alimentar algo en un comando anterior. Al usarlo, estamos diciendo que vamos a proporcionar una cadena de información para que elshasum
comando la use como entrada.La cadena de información de entrada debe tener marcas individuales de apertura y cierre, como
'some string here'
, o en este caso, el hash, el carácter de modo y la ruta de archivo a verificar.La parte hash dentro de la cadena no necesita nada especial, pero debe ir seguida de un espacio.
La parte del carácter del modo puede ser nada, un asterisco (
*
), un signo de interrogación (?
) o un símbolo de intercalación (^
). Esto indicashasum
el modo con el que se generó el hash. (Nota: ningún carácter, que representa el modo de texto, esshasum
el valor predeterminado).La ruta de archivo parte, es el camino real para el archivo que desea comprobar.
Entonces, aquí hay un ejemplo de la vida real que compara un archivo de descarga de MAMP en particular con su supuesto valor SHA-256 . Se
*
requería el carácter de modo para que esta verificación funcionara:Nota: el resultado de este comando (para mi archivo de ejemplo) es:
OKAY:
o
HA FALLADO:
fuente
shasum -c <<< '7cb77378a0749f2a9b7e09ea62ffb13febf3759f *sample.txt'
devuelve el mensaje*sample.txt: FAILED open or read
. Sin el asterisco,sample.txt: OK
. Todavía no he podido encontrar la base del uso del asterisco en otros lugares. ¿Podrías aclarar?--binary
opción)? Desde la página del manual: "Al verificar, la entrada debe ser una salida anterior de este programa. El modo predeterminado es imprimir una línea con suma de verificación, un carácter que indica el tipo (*
para binario,` `para texto,U
para UNIVERSAL,^
para BITS,?
para portátil) y el nombre de cada ARCHIVO ". Entonces, ¿los caracteres entre la suma de verificación y el nombre de archivo dependen del modo establecido cuando se creó la suma de verificación?Yo usaría este comando.
Ejemplo:
fuente