gpt4 book ai didi

linux - Linux 加密库中的 alloc_ahash 与 alloc_shash

转载 作者:可可西里 更新时间:2023-11-01 02:42:29 27 4
gpt4 key购买 nike

在 Linux CRYPTO 库中,有什么区别:

  • crypto_alloc_hash(...);
  • crypto_alloc_ahash(...);
  • crypto_alloc_shash(...);

我猜“a”代表异步,“s”代表同步。

如果是这种情况,在实现选择方面意味着什么?

(我正在尝试找到在使用 CRYPTO 库处理 TCP 数据包时计算 HMAC(SHA1) 值的正确方法)。

最佳答案

SO Question1 & SO Question2对你来说是很好的起点。

没有所谓的异步函数和同步函数。所有函数(被调用者)都需要返回给调用者。

但是有异步和同步操作。

crypto_alloc_ahash()crypto_alloc_hash() 的区别在于首先由异步操作组成,后者由同步操作。

在第一个函数被调用时立即返回到主程序的情况下,留下它的操作来完成。当操作完成时,他们通常使用 SIGNALS/INTERRUPTS 让主程序知道他们已经完成。可以看到实现 here摘录如下。

struct crypto_ahash *crypto_alloc_ahash(const char *alg_name, u32 type,
u32 mask)
{
return crypto_alloc_tfm(alg_name, &crypto_ahash_type, type, mask);
}

在后者的情况下,主程序(调用者)必须等待函数中的操作完成才能继续。我想不出具体的场景在这种情况下同步是强制性的。可以看到实现 here

事实上,这两个函数看起来是一样的,但它们返回的值的类型不同。
函数的异步变体通常是您应该寻找的程序速度原因。此外,出于显而易见的原因,您不能从同步变体进行异步调用。

编辑:

crypto_alloc_hash是同步哈希,我找不到哈希和散列之间的区别。

如果成功,两者都返回分配的密码句柄; IS_ERR 在发生错误时为真,PTR_ERR 返回错误代码。

参见 shash对比hash .

关于linux - Linux 加密库中的 alloc_ahash 与 alloc_shash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33919247/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com