HMACContext
用来为一个使用密钥的信息创建 HMAC。
描述
HMACContext 类对于高级的 HMAC 用例非常有用,例如流式消息,因为它支持在一段时间内创建消息,而不是一次性提供。
extends Node
var ctx = HMACContext.new()
func _ready():
var key = "supersecret".to_utf8()
var err = ctx.start(HashingContext.HASH_SHA256, key)
assert(err == OK)
var msg1 = "this is ".to_utf8()
var msg2 = "vewy vewy secret".to_utf8()
err = ctx.update(msg1)
assert(err == OK)
err = ctx.update(msg2)
assert(err == OK)
var hmac = ctx.finish()
print(hmac.hex_encode())
而在 C# 中,我们可以使用下面的方法。
using Godot;
using System;
using System.Diagnostics;
public class CryptoNode : Node
{
private HMACContext ctx = new HMACContext();
public override void _Ready()
{
PoolByteArray key = String("supersecret").to_utf8();
Error err = ctx.Start(HashingContext.HASH_SHA256, key);
GD.Assert(err == OK);
PoolByteArray msg1 = String("this is ").to_utf8();
PoolByteArray msg2 = String("vewy vew secret").to_utf8();
err = ctx.Update(msg1);
GD.Assert(err == OK);
err = ctx.Update(msg2);
GD.Assert(err == OK);
PoolByteArray hmac = ctx.Finish();
GD.Print(hmac.HexEncode());
}
}
注意:在 HTML5 导出中不可用。
方法
finish ( ) | |
start ( HashType hash_type, PoolByteArray key ) | |
update ( PoolByteArray data ) |
方法说明
- PoolByteArray finish ( )
返回生成的 HMAC。如果 HMAC 失败,将返回一个空的 PoolByteArray。
- Error start ( HashType hash_type, PoolByteArray key )
初始化 HMACContext。在 finish 被调用之前,不能在同一个 HMACContext 上再次调用此方法。
- Error update ( PoolByteArray data )
更新要进行 HMAC 的消息。在调用 finish 将 data
追加到消息中之前,可以多次调用,但在调用 start 之前不能调用。