Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
HashingContext
Eredita: RefCounted < Object
Fornisce funzionalità per calcolare hash crittografici pezzo per pezzo.
Descrizione
La classe HashingContext fornisce un'interfaccia per il calcolare gli hash crittografici attraverso più iterazioni. Utile per calcolare gli hash di file grandi (in modo da non doverli caricare tutti in memoria), flussi di rete e flussi di dati in generale (in modo da non dover contenere alcun buffer).
L'enumerazione HashType mostra gli algoritmi di hashing supportati.
const CHUNK_SIZE = 1024
func hash_file(path):
# Controlla che il file esista.
if not FileAccess.file_exists(path):
return
#Avvia un contesto SHA-256.
var ctx = HashingContext.new()
ctx.start(HashingContext.HASH_SHA256)
# Apre il file su cui calcolare l'hash.
var file = FileAccess.open(path, FileAccess.READ)
# Aggiorna il contesto dopo aver letto ogni blocco.
while file.get_position() < file.get_length():
var remaining = file.get_length() - file.get_position()
ctx.update(file.get_buffer(min(remaining, CHUNK_SIZE)))
# Ottieni l'hash calcolato.
var res = ctx.finish()
# Stampa il risultato come stringa esadecimale e array.
printt(res.hex_encode(), Array(res))
public const int ChunkSize = 1024;
public void HashFile(string path)
{
// Controlla che il file esista.
if (!FileAccess.FileExists(path))
{
return;
}
// Avvia un contesto SHA-256.
var ctx = new HashingContext();
ctx.Start(HashingContext.HashType.Sha256);
// Apre il file su cui calcolare l'hash.
using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);
// Aggiorna il contesto dopo aver letto ogni blocco.
while (file.GetPosition() < file.GetLength())
{
int remaining = (int)(file.GetLength() - file.GetPosition());
ctx.Update(file.GetBuffer(Mathf.Min(remaining, ChunkSize)));
}
// Ottieni l'hash calcolato.
byte[] res = ctx.Finish();
// Stampa il risultato come stringa esadecimale e array.
GD.PrintT(res.HexEncode(), (Variant)res);
}
Metodi
finish() |
|
update(chunk: PackedByteArray) |
Enumerazioni
enum HashType: 🔗
HashType HASH_MD5 = 0
Algoritmo di hashing: MD5.
HashType HASH_SHA1 = 1
Algoritmo di hashing: SHA-1.
HashType HASH_SHA256 = 2
Algoritmo di hashing: SHA-256.
Descrizioni dei metodi
PackedByteArray finish() 🔗
Chiude il contesto attuale e restituisce l'hash calcolato.
Avvia un nuovo calcolo di hash di tipo type (ad esempio HASH_SHA256 per avviare il calcolo di un SHA-256).
Error update(chunk: PackedByteArray) 🔗
Aggiorna il calcolo con il chunk di dati specificato.