Los checksum generados por sha256 de BSD -particularmente de OpenBSD-, aparte de utilizar la representación hexadecimales igual a los generados por sha256sum de coreutils permiten que su salida utilice la notación base64 que no es soportada por la versión de coreutils.
Es posible convertir un archivo con checksums generados por la versión de BSD utilizando la representación de base64 a una representación hexadecimal (que pueda utilizarse con coreutils) utilizarse el siguiente programa awk:
$ cat > convert.awk <<'END'
#!/bin/awk -f
{
printf("%s %s %s ", $1, $2, $3);
system("echo '" $4 "' | base64 -d | od -t x1 -An | tr -d ' \n'");
printf("\n")
}
END
$ chmod +x convert.awk
Nota: El programa anterior utiliza cuatro procesos por linea del archivo de entrada, por lo que no es muy eficiente y solo se recomienda utilizar con archivos de entrada pequeños. Como ventaja, es una construcción en shell que requiere compilar o instalar librerías para poder ser utilizada.
Ejemplo de uso
Verificar con sha256sum
de coreutils el archivo
SHA256 creado con sha256
de
openbsd utilizando notación base64:
$ wget 'http://firmware.openbsd.org/firmware/6.7/SHA256'
$ ./convert.awk < SHA256 > SHA256SUM