HashingContext

Inherits: Reference < Object

在多次迭代中计算加密哈希的上下文。

描述

HashingContext 类为计算多次迭代的加密哈希值提供接口。例如,当计算大文件的哈希值(你不必在内存中加载它们)、网络流和一般的数据流(你不必持有缓冲区)时,这很有用。

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

  1. const CHUNK_SIZE = 1024
  2. func hash_file(path):
  3. var ctx = HashingContext.new()
  4. var file = File.new()
  5. # 开始一个 SHA-256 context。
  6. ctx.start(HashingContext.HASH_SHA256)
  7. # 检查文件是否存在。
  8. if not file.file_exists(path):
  9. return
  10. # 打开文件的哈希。
  11. file.open(path, File.READ)
  12. # 在读取每一区块后,更新上下文。
  13. while not file.eof_reached():
  14. ctx.update(file.get_buffer(CHUNK_SIZE))
  15. # 获取计算的哈希值。
  16. var res = ctx.finish()
  17. # 以十六进制字符串和数组的形式打印结果。
  18. printt(res.hex_encode(), Array(res))

注意:这在导出为 HTML5 时是不可用的。

方法

PoolByteArray

finish ( )

Error

start ( HashType type )

Error

update ( PoolByteArray chunk )

枚举

enum HashType:

  • HASH_MD5 = 0 —- 哈希算法:MD5。

  • HASH_SHA1 = 1 —- 哈希算法:SHA-1。

  • HASH_SHA256 = 2 —- 哈希算法:SHA-256。

方法说明

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


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


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