sha1sum
genera 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> | base64
o si lo genera directamente, también está bien.
hashsum
cryptography
base64
xenoterracida
fuente
fuente
echo foo | openssl dgst -binary -sha1 | base64
es equivalente, y probablemente la forma más limpia de hacerlo.openssl
para base64 también tiene la ventaja de depender de una sola herramienta (ksh: base64: not found
).sha512
, es posible que desee agregar una-A
opción alopenssl base64
comando final , para evitar dividir la cadena resultante en varias líneas.echo foo > somefile; cat somefile | openssl dgst -binary -sha1 | openssl base64
produce una cadena diferente?echo -n foo
yecho foo
producen diferentes cadenas.Dado
sha1sum
que no proporciona una opción para la salida binaria, es probable que necesite encontrar una utilidad que haga lo contrariood
y canalizarlos. Tomando la sugerencia de fschmitt para usarxxd
con las banderas 'reverse' y 'plain dump' se verá así:sha1sum | cut -f1 -d\ | xxd -r -p | base64
fuente
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
sed
para convertirla en una cadena de valores hexadecimales escapados, y luego la usoecho -en
para 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
hexdump
lugar dexxd
tener 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::SHA
módulo (en la distribución base desde 5.9.3), o elDigest::SHA1
módulo anterior , puede hacer todo el cálculo en perl. A partir de perl 5.10.1,b64digest
no 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
-b
opción alsha256
comando de OpenBSD (o sha1, sha512):o:
fuente