字符串的良好哈希函数
我试图为字符串想出一个好的哈希函数。我在想,总结字符串中前五个字符的unicode值可能是一个好主意(假设它有五个,否则在它结束的地方停止)。这是一个好主意,还是一个坏主意?
我在Java中这样做,但我不会想象这会有太大的区别。
我试图为字符串想出一个好的哈希函数。我在想,总结字符串中前五个字符的unicode值可能是一个好主意(假设它有五个,否则在它结束的地方停止)。这是一个好主意,还是一个坏主意?
我在Java中这样做,但我不会想象这会有太大的区别。
通常哈希不会做求和,否则将具有相同的哈希。stop
pots
并且您不会将其限制为前n个字符,因为否则房屋和房屋将具有相同的哈希值。
通常,哈希值并将其乘以素数(使其更有可能生成唯一哈希),因此您可以执行以下操作:
int hash = 7;
for (int i = 0; i < strlen; i++) {
hash = hash*31 + charAt(i);
}
如果这是一个安全的东西,你可以使用Java加密:
import java.security.MessageDigest;
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(stringToHash.getBytes());
String stringHash = new String(messageDigest.digest());