HashingContext
Наследует: RefCounted < Object
Предоставляет функциональность для вычисления криптографических хешей по частям.
Описание
Класс HashingContext предоставляет интерфейс для вычисления криптографических хэшей в течение нескольких итераций. Полезно для вычисления хэшей больших файлов (чтобы вам не приходилось загружать их все в память), сетевых потоков и потоков данных в целом (чтобы вам не приходилось хранить буферы).
Перечисление HashType показывает поддерживаемые алгоритмы хэширования.
const CHUNK_SIZE = 1024
func hash_file(path):
# Проверить, существует ли файл.
if not FileAccess.file_exists(path):
return
# Запустить контекст SHA-256.
var ctx = HashingContext.new()
ctx.start(HashingContext.HASH_SHA256)
# Открыть файл для хэширования.
var file = FileAccess.open(path, FileAccess.READ)
# Обновить контекст после прочтения каждого фрагмента.
while file.get_position() < file.get_length():
var remaining = file.get_length() - file.get_position()
ctx.update(file.get_buffer(min(remaining, CHUNK_SIZE)))
# Получить вычисленный хэш.
var res = ctx.finish()
# Вывести результат в виде шестнадцатеричной строки и массива.
printt(res.hex_encode(), Array(res))
public const int ChunkSize = 1024;
public void HashFile(string path)
{
// Проверить, существует ли файл.
if (!FileAccess.FileExists(path))
{
return;
}
// Запустить контекст SHA-256.
var ctx = new HashingContext();
ctx.Start(HashingContext.HashType.Sha256);
// Открыть файл для хэширования.
using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);
// Обновить контекст после прочтения каждого фрагмента.
while (file.GetPosition() < file.GetLength())
{
int remaining = (int)(file.GetLength() - file.GetPosition());
ctx.Update(file.GetBuffer(Mathf.Min(remaining, ChunkSize)));
}
// Получить вычисленный хэш.
byte[] res = ctx.Finish();
// Вывести результат в виде шестнадцатеричной строки и массива.
GD.PrintT(res.HexEncode(), (Variant)res);
}
Методы
finish() |
|
update(chunk: PackedByteArray) |
Перечисления
enum HashType: 🔗
HashType HASH_MD5 = 0
Алгоритм хэширования: MD5.
HashType HASH_SHA1 = 1
Алгоритм хэширования: SHA-1.
HashType HASH_SHA256 = 2
Алгоритм хэширования: SHA-256.
Описания метода
PackedByteArray finish() 🔗
Закрывает текущий контекст и возвращает вычисленный хэш.
Запускает новое вычисление хэша указанного type (например, HASH_SHA256 для запуска вычисления SHA-256).
Error update(chunk: PackedByteArray) 🔗
Обновляет вычисление с использованием указанного chunk данных.