col*_*cer 1 hash search substring
我想在字符串中搜索子字符串,例如在'abcdefgh'中搜索'cdef'.但是我需要使用某种算法对子字符串进行预处理以隐藏它,以便没人知道我搜索它.以md5()为例.那么在'abcdefgh'中搜索md5('cdef')的最快方法是什么?
由于两个原因,无法做到这一点.
在高级别,具有加密散列函数的整个点是隐藏原始字符串的内容,同时给予其他人确认原始字符串散列到正确值的方式.加密哈希(即使MD5现已被破坏)具有这样的属性,即使对输入字符串进行微小调整也会导致哈希输出发生巨大变化,因此子串的MD5与字符串本身之间不应存在相关性.如果可以确定字符串在散列之后是否是另一个字符串的子字符串,那么这将是一个巨大的安全漏洞并且会完全使散列无效.
多个字符串可以具有相同的哈希码,这意味着如果您只有字符串的MD5,则无法知道原始字符串是否是某个其他字符串的子字符串.您永远无法区分具有子字符串的MD5或非子字符串的MD5的情况,这些情况恰好与子字符串具有相同的哈希值.
您需要从根本上改变您的方法以使其发挥作用.
希望这可以帮助!