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
Успадковує: 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 remainder = (int)(file.GetLength() - file.GetPosition());
ctx.Update(file.GetBuffer(Mathf.Min(remaining, ChunkSize)));
}
// Отримати обчислений хеш.
byte[] res = ctx.Finish();
// Вивести результат як шістнадцятковий рядок і масив.
GD.PrintT(res.HexEncode(), (Variant)res);
}
Методи
PackedByteArray |
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 даних.