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
Hérite de : RefCounted < Object
Fournit des fonctionnalités pour calculer des hachages cryptographiques morceau par morceau.
Description
La classe HashingContext fournit une interface pour calculer des hachages cryptographiques sur plusieurs itérations. Utile pour calculer des hachages de fichiers très volumineux (pour ne pas avoir à les garder complètement en mémoire), de flux réseau, et de flux de données en général (pour ne pas avoir à maintenir des buffers).
L'énumération HashType liste tous les algorithmes de hachage supportés.
const TAILLE_CHUNK = 1024
func hacher_fichier(chemin):
# Vérifier que le fichier existe.
if not FileAccess.file_exists(path):
return
# Créer un contexte SHA-256.
var ctx = HashingContext.new()
ctx.start(HashingContext.HASH_SHA256)
# Ouvrir le fichier à hacher.
var fichier = FileAccess.open(chemin, FileAccess.READ)
# Mettre à jour le contexte après la lecture de chaque morceau ("chunk").
while file.get_position() < file.get_length():
var restant = fichier.get_length() - fichier.get_position()
ctx.update(fichier.get_buffer(min(restant, TAILLE_CHUNK)))
# Récupérer le hachage calculé.
var res = ctx.finish()
# Afficher le résultat sous forme hexadécimale et en tableau.
printt(res.hex_encode(), Array(res))
public const int TailleChunk = 1024;
public void HacherFichier(string chemin)
{
// Vérifier que le fichier existe.
if (!FileAccess.FileExists(chemin))
{
return;
}
// Créer un contexte SHA-256.
var ctx = new HashingContext();
ctx.Start(HashingContext.HashType.Sha256);
// Ouvrir le fichier à hacher.
using var fichier = FileAccess.Open(chemin, FileAccess.ModeFlags.Read);
// Mettre à jour le contexte après la lecture de chaque morceau ("chunk").
while (fichier.GetPosition() < fichier.GetLength())
{
int restant = (int)(fichier.GetLength() - fichier.GetPosition());
ctx.Update(fichier.GetBuffer(Mathf.Min(restant, TailleChunk)));
}
// Récupérer le hachage calculé.
byte[] res = ctx.Finish();
// Afficher le résultat sous forme hexadécimale et en tableau.
GD.PrintT(res.HexEncode(), (Variant)res);
}
Méthodes
finish() |
|
update(chunk: PackedByteArray) |
Énumérations
enum HashType: 🔗
HashType HASH_MD5 = 0
Algorithme de hachage : MD5.
HashType HASH_SHA1 = 1
Algorithme de hachage : SHA-1.
HashType HASH_SHA256 = 2
Algorithme de hachage : SHA-256.
Descriptions des méthodes
PackedByteArray finish() 🔗
Finalise l'actuel contexte, et renvoie le hachage calculé.
Commence un nouveau calcul de hachage du type donné (par exemple HASH_SHA256 pour commencer le calcul d'un SHA-256).
Error update(chunk: PackedByteArray) 🔗
Met à jour le calcul avec la partie des données chunk donnée.