OpenSSL EVP API 无冲突与单向 属性 MAC

OpenSSL EVP API Collision-Free vs. One-Way Property MAC

我正在做一项作业,我必须比较对无碰撞 MAC 的暴力攻击与单向 属性 MAC 使用C 中的 OpenSSL EVP 库。澄清一下,我不是在寻找作业方面的任何帮助,只是 EVP 的实现。

我创建了以下代码来创建给定输入字符串的哈希值:

OpenSSL_add_all_digests();

// Set Hash Digest

md = EVP_get_digestbyname("MD5");

// Create Hash
EVP_MD_CTX_init(&c);
EVP_DigestInit_ex(&c, md, NULL);
EVP_DigestUpdate(&c, plaintext, strlen(plaintext)); 
EVP_DigestFinal_ex(&c, hash, &hash_len);
EVP_MD_CTX_cleanup(&c);

这完全符合创建散列的需要。如何为单向与无碰撞设置 属性?我无法在文档中找到任何具体内容,只需要对这一点进行澄清。

我认为您将算法的属性与对象的属性或 - 在 C 术语中 - 上下文混淆了。 MD5 有一种方式 属性,就像太阳有一种方式 属性 发出淡黄色的光。您无法删除或配置 属性。所以你需要使用不同的哈希方法,而不是配置特定的。

请注意,MD5 本身不是 MAC(HMAC-MD5 是),它是一种安全的哈希算法。