HashingContext

继承: RefCounted < Object

提供分段计算加密哈希的功能。

描述

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

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

GDScriptC#

  1. const CHUNK_SIZE = 1024
  2. func hash_file(path):
  3. # 检查文件是否存在。
  4. if not FileAccess.file_exists(path):
  5. return
  6. # 启动一个 SHA-256 上下文。
  7. var ctx = HashingContext.new()
  8. ctx.start(HashingContext.HASH_SHA256)
  9. # 打开文件进行哈希处理。
  10. var file = FileAccess.open(path, FileAccess.READ)
  11. # 读取每个块后更新上下文。
  12. while not file.eof_reached():
  13. ctx.update(file.get_buffer(CHUNK_SIZE))
  14. # 获取计算的哈希值。
  15. var res = ctx.finish()
  16. # 将结果打印为十六进制字符串和数组。
  17. printt(res.hex_encode(), Array(res))
  1. public const int ChunkSize = 1024;
  2. public void HashFile(string path)
  3. {
  4. // 检查文件是否存在。
  5. if (!FileAccess.FileExists(path))
  6. {
  7. return;
  8. }
  9. // 启动一个 SHA-256 上下文。
  10. var ctx = new HashingContext();
  11. ctx.Start(HashingContext.HashType.Sha256);
  12. // 打开文件进行哈希处理。
  13. using var file = FileAccess.Open(path, FileAccess.ModeFlags.Read);
  14. // 读取每个块后更新上下文。
  15. while (!file.EofReached())
  16. {
  17. ctx.Update(file.GetBuffer(ChunkSize));
  18. }
  19. // 获取计算的哈希值。
  20. byte[] res = ctx.Finish();
  21. // 将结果打印为十六进制字符串和数组。
  22. GD.PrintT(res.HexEncode(), (Variant)res);
  23. }

方法

PackedByteArray

finish ( )

Error

start ( HashType type )

Error

update ( PackedByteArray chunk )


枚举

enum HashType:

HashType HASH_MD5 = 0

哈希算法:MD5。

HashType HASH_SHA1 = 1

哈希算法:SHA-1。

HashType HASH_SHA256 = 2

哈希算法:SHA-256。


方法说明

PackedByteArray finish ( )

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


Error start ( HashType type )

开始对给定类型 type 的哈希计算(例如 HASH_SHA256 会开始计算 SHA-256)。


Error update ( PackedByteArray chunk )

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

Previous Next


© 版权所有 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC BY 3.0). Revision b1c660f7.

Built with Sphinx using a theme provided by Read the Docs.