HashingContext
Hereda: RefCounted < Object
Provides functionality for computing cryptographic hashes chunk by chunk.
Descripción
La clase HashingContext proporciona una interfaz para calcular hashes criptográficos en múltiples iteraciones. Esto es útil para calcular hashes de archivos grandes (para no tener que cargarlos todos en la memoria), flujos de red y flujos de datos en general (para no tener que mantener búferes).
El HashType enum muestra los algoritmos de hash soportados.
const TAMANO_FRAGMENTO = 1024
func hashear_archivo(ruta):
# Comprueba que el archivo existe.
if not FileAccess.file_exists(ruta):
return
# Inicia un contexto SHA-256.
var ctx = HashingContext.new()
contexto.start(HashingContext.HASH_SHA256)
# Abre el archivo a hashear.
var archivo = FileAccess.open(ruta, FileAccess.READ)
# Actualiza el ctx después de leer cada fragmento.
while archivo.get_position() < archivo.get_length():
var restante = archivo.get_length() - archivo.get_position()
contexto.update(archivo.get_buffer(min(restante, TAMANO_FRAGMENTO)))
# Obtiene el hash computado.
var res = ctx.finish()
# Imprime el resultado como una string hexadecimal y un array.
printt(res.hex_encode(), Array(res))
public const int TamanoFragmento = 1024;
public void HashearArchivo(string ruta)
{
// Comprueba que el archivo existe.
if (!FileAccess.FileExists(ruta))
{
return;
}
// Inicia un contexto SHA-256.
var ctx = new HashingContext();
contexto.Start(HashingContext.HashType.Sha256);
// Abre el archivo a hashear.
using var archivo = FileAccess.Open(ruta, FileAccess.ModeFlags.Read);
// Actualiza el contexto después de leer cada fragmento.
while (archivo.GetPosition() < archivo.GetLength())
{
int restante = (int)(archivo.GetLength() - archivo.GetPosition());
contexto.Update(archivo.GetBuffer(Mathf.Min(restante, TamanoFragmento)));
}
// Obtiene el hash computado.
byte[] res = ctx.Finish();
// Imprime el resultado como una string hexadecimal y un array.
GD.PrintT(res.HexEncode(), (Variant)res);
}
Métodos
finish() |
|
update(chunk: PackedByteArray) |
Enumeraciones
enum HashType: 🔗
HashType HASH_MD5 = 0
Algoritmo de Hasheado: MD5.
HashType HASH_SHA1 = 1
Algoritmo de Hasheado: SHA-1.
HashType HASH_SHA256 = 2
Algoritmo de Hasheado: SHA-256.
Descripciones de Métodos
PackedByteArray finish() 🔗
Cierra el contexto actual, y devuelve el hash calculado.
Inicia un nuevo cálculo de hash del type dado (p. ej., HASH_SHA256 para iniciar el cálculo de un SHA-256).
Error update(chunk: PackedByteArray) 🔗
Actualiza el cálculo con el chunk de datos dado.