sha1sumgenera un formato codificado hexadecimal del sha real. Me gustaría ver una variante codificada en base64. posiblemente algún comando que genere la versión binaria que pueda canalizar, como así: echo -n "message" | <some command> | base64o si lo genera directamente, también está bien.
hashsum
cryptography
base64
xenoterracida
fuente
fuente

echo foo | openssl dgst -binary -sha1 | base64es equivalente, y probablemente la forma más limpia de hacerlo.opensslpara base64 también tiene la ventaja de depender de una sola herramienta (ksh: base64: not found).sha512, es posible que desee agregar una-Aopción alopenssl base64comando final , para evitar dividir la cadena resultante en varias líneas.echo foo > somefile; cat somefile | openssl dgst -binary -sha1 | openssl base64produce una cadena diferente?echo -n fooyecho fooproducen diferentes cadenas.Dado
sha1sumque no proporciona una opción para la salida binaria, es probable que necesite encontrar una utilidad que haga lo contrarioody canalizarlos. Tomando la sugerencia de fschmitt para usarxxdcon las banderas 'reverse' y 'plain dump' se verá así:sha1sum | cut -f1 -d\ | xxd -r -p | base64fuente
xxd:)No estoy completamente seguro de entender lo que quieres, pero creo que algo como lo siguiente debería funcionar:
Básicamente, tomo la salida hexadecimal, la uso
sedpara convertirla en una cadena de valores hexadecimales escapados, y luego la usoecho -enpara hacer eco de los bytesbase64.Podemos confirmar que el resultado final corresponde al mismo hash con el siguiente ejercicio:
La inspección visual muestra que nuestro valor base64 coincide con el hexadecimal original. Tenga en cuenta que si usa en
hexdumplugar dexxdtener que jugar un poco con la configuración de formato para obtener la salida que espera.fuente
Perl tiene un módulo base64 (en la distribución base desde 5.7.1).
Si tiene el
Digest::SHAmódulo (en la distribución base desde 5.9.3), o elDigest::SHA1módulo anterior , puede hacer todo el cálculo en perl. A partir de perl 5.10.1,b64digestno rellena la salida base64; Si necesita relleno, la forma más fácil es usarloMIME::Base64.fuente
El hash SHA256 codificado en Base64 se convirtió en una suma de comprobación de archivo estándar en OpenBSD recientemente. Se puede hacer simplemente agregando la
-bopción alsha256comando de OpenBSD (o sha1, sha512):o:
fuente