es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo obtener el hash de una cadena directamente en un archivo por lotes?

Solo quiero obtener el hash SHA256 de una cadena en mi script de batch utilizando la utilidad certUtil incorporada de Windows.

Quiero usar certUtil para calcular los hashes de un archivo, pero solo quiero calcular el hash de una cadena dentro del propio script de batch y almacenarlo como una variable llamada %hash%. La cadena también será una variable, por ejemplo %var%.

¿Existe una forma sencilla de hacer esto?

Enfoque alternativo/complicado:

Conozco un método para el cual podemos escribir la variable en un archivo usando:

echo %var% >> example.txt

Y luego calcular el hash de este archivo utilizando:

CertUtil -hashfile "example.txt" SHA256

Pero este método tiene sus propios problemas:

  • En primer lugar, el uso de >> también agrega un “Enter” después de escribir %var% en el archivo, lo que cambia todo el hash.

  • Además, no puedo obtener el hash en la variable %hash% utilizando este método. He probado todo lo que se indica en este enlace, pero no puedo hacer que funcione. (Soy nuevo en la programación de archivos por lotes).

¿Existe una forma sencilla de hacer esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma sencilla de hacer esto sin escribir en un archivo. Puedes utilizar la función de sustitución de comandos de los archivos por lotes para capturar directamente la salida de certUtil como una variable.

    Aquí tienes un ejemplo:

    set var=hello
    for /f "tokens=2 delims=: " %%a in ('echo %var% ^| certUtil -hashfile - SHA256 ^| findstr /i /v "certutil"') do set hash=%%a
    echo %hash%
    

    En este ejemplo, asignamos la cadena “hello” a la variable var. Luego, enviamos esta cadena a través de una tubería a certUtil, que calcula el hash utilizando el algoritmo SHA256. Utilizamos el comando findstr para eliminar la salida de encabezado de certUtil y capturar únicamente el valor del hash. Finalmente, asignamos el valor capturado a la variable hash utilizando la sustitución de comandos.

    Ahora, si ejecutamos echo %hash%, veremos el valor del hash calculado para la cadena “hello”. Puedes sustituir tu propio nombre de variable por %var% en este ejemplo para calcular el hash de cualquier variable de cadena.

Comments are closed.