Apéndice B — Cálculo de la huella digital (fingerprint) de un archivo.
Para calcular la huella digital (fingerprint) de un archivo, es necesario usar el mismo algoritmo de hash que el utilizado en Belenios. El algoritmo utilizado es SHA-256, pero con el resultado expresado en Base64 sin relleno, en vez de la representación hexadecimal habitual.
En el repositorio https://gitlab.unc.edu.ar/belenios-unc/tools se provee el script fingerprint.py que permite calcular la huella digital de uno o más archivos.
También es posible hacerlo desde la línea de comandos, como en el ejemplo siguiente. Usamos el archivo voters.txt como ejemplo, pero por supuesto, se puede reemplazar por cualquier otro archivo.
sha256sum voters.txt | xxd -p -r | base64 | tr -d "="(o shasum -a256 en lugar de sha256sum, por ejemplo en MacOS)
En Windows, con PowerShell, el código equivalente es:
$hexHash = (
Get-FileHash "voters.txt" -Algorithm SHA256
).Hash
$byteArray = (
$hexHash -split '(..)' |
Where-Object { $_ } |
ForEach-Object { [Convert]::ToByte($_, 16) }
)
$base64String = (
[Convert]::ToBase64String($byteArray)
).TrimEnd('=')
Write-Output $base64StringEn Python, puede utilizarse un código similar al siguiente:
import base64
from hashlib import sha256
with open("voters.txt", "rb") as f:
digest = sha256(f.read()).digest()
encoded = base64.b64encode(digest)
print(encoded.decode().strip('='))