我只有长字符串的哈希值,但我无法访问它的内容。
现在我有一个新的短字符串,可以被长字符串包含。我需要确定长字符串是否包含短字符串。
Integer longStringHash = 352736;
String shortString = "hello world";
if (compare(hash(shortString), longStringHash) == 1) {
;// wow, they are very close!
}
有没有为此目的的算法?
PS。 shortString的长度小于longString的长度。
答案 0 :(得分:0)
如果您只将哈希作为信息,则无法谈论"长字符串":
longString
的bazillions包含给定的2字节shortString
和给定的散列。这是一个小型Java代码,证明它是可能的:
public class CheckLongHash
{
public static void main(String[] args) {
String shortString = "hello world ";
String longString = "hello world fqgr46bnnevab";
Integer goal = 352736;
System.out.println(longString.startsWith(shortString) &&
longString.hashCode() == goal);
// true
}
}
"hello world fqgr46bnnevab"
长字符串?可能不是。它通过了规格吗?是。