如何在没有NULL字节的散列函数中确保安全性?

时间:2011-03-07 01:22:49

标签: c cryptography encryption

我此前正在考虑这个问题,并想出了一个问题:

“从理论上讲,哈希函数的散列函数,当被散列时,可能会被认为是脆弱的,因为任何字符数组中的空字节都会被解释为C中字符串的结尾?因此作为攻击者,我们可能会忽略我们最初的字符串中的那个字符(可能还有其他字符)来暴力破解?“

很抱歉,如果我对此不是很清楚。

2 个答案:

答案 0 :(得分:4)

散列函数的输出通常是固定长度的字节数组(或机器字);它应该被解释为固定长度的数组,而不是零分隔的字符串。

解决方案是在代码中使用memcmp(3)而不是strcmp(3)

答案 1 :(得分:3)

散列函数不会产生字符串(基于字符)输出。它们产生(固定长度)字节数组。如果需要,可以将其转换为Base64或Base16,然后你有一个字符串(它永远不会包含空字节,只有00)。