HMACContext

Inherits: Reference < Object

用来为一个使用密钥的信息创建 HMAC。

描述

HMACContext 类对于高级的 HMAC 用例非常有用,例如流式消息,因为它支持在一段时间内创建消息,而不是一次性提供。

  1. extends Node
  2. var ctx = HMACContext.new()
  3. func _ready():
  4. var key = "supersecret".to_utf8()
  5. var err = ctx.start(HashingContext.HASH_SHA256, key)
  6. assert(err == OK)
  7. var msg1 = "this is ".to_utf8()
  8. var msg2 = "vewy vewy secret".to_utf8()
  9. err = ctx.update(msg1)
  10. assert(err == OK)
  11. err = ctx.update(msg2)
  12. assert(err == OK)
  13. var hmac = ctx.finish()
  14. print(hmac.hex_encode())

而在 C# 中,我们可以使用下面的方法。

  1. using Godot;
  2. using System;
  3. using System.Diagnostics;
  4. public class CryptoNode : Node
  5. {
  6. private HMACContext ctx = new HMACContext();
  7. public override void _Ready()
  8. {
  9. PoolByteArray key = String("supersecret").to_utf8();
  10. Error err = ctx.Start(HashingContext.HASH_SHA256, key);
  11. GD.Assert(err == OK);
  12. PoolByteArray msg1 = String("this is ").to_utf8();
  13. PoolByteArray msg2 = String("vewy vew secret").to_utf8();
  14. err = ctx.Update(msg1);
  15. GD.Assert(err == OK);
  16. err = ctx.Update(msg2);
  17. GD.Assert(err == OK);
  18. PoolByteArray hmac = ctx.Finish();
  19. GD.Print(hmac.HexEncode());
  20. }
  21. }

注意:在 HTML5 导出中不可用。

方法

PoolByteArray

finish ( )

Error

start ( HashType hash_type, PoolByteArray key )

Error

update ( PoolByteArray data )

方法说明

返回生成的 HMAC。如果 HMAC 失败,将返回一个空的 PoolByteArray


初始化 HMACContext。在 finish 被调用之前,不能在同一个 HMACContext 上再次调用此方法。


更新要进行 HMAC 的消息。在调用 finishdata 追加到消息中之前,可以多次调用,但在调用 start 之前不能调用。