HashingContext

继承: RefCounted < Object

提供逐块计算加密哈希的功能。

描述

HashingContext 类提供了一个接口,用于在多次迭代中计算加密哈希值。常用于计算大文件(不必全部加载到内存中)、网络流和一般数据流(不必持有缓冲区)的哈希值。

HashType枚举显示了支持的哈希算法。

const CHUNK_SIZE = 1024

func hash_file(path):
    # 检查该文件是否存在。
    if not FileAccess.file_exists(path):
        return
    # 启动一个 SHA-256 context.
    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))

方法


枚举

enum HashType: 🔗

HashType HASH_MD5 = 0

散列算法: MD5.

HashType HASH_SHA1 = 1

散列算法:SHA-1。

HashType HASH_SHA256 = 2

散列算法:SHA-256。


方法说明

PackedByteArray finish() 🔗

关闭当前上下文,并返回计算的哈希。


Error start(type: HashType) 🔗

开始给定type的新哈希计算(例如HASH_SHA256开始计算SHA-256)。


Error update(chunk: PackedByteArray) 🔗

使用给定的chunk数据更新计算。