【发布时间】:2020-11-18 19:45:55
【问题描述】:
什么是从字符串种子计算(不安全)哈希字符串的简单方法,最终结果具有特定长度和相当低的冲突概率?
例如在 C# 中:
string seed = "PK_DELETE_THIS_TABLE";
Console.WriteLine("Seed: {0}", seed);
string hashedData = SimpleHash(seed, 30/2);
Console.WriteLine("Hash: {0}", hashedData);
结果:
Seed: PK_DELETE_THIS_TABLE
Hash: CC598675A3072C8B1768DED09BAAA5
【问题讨论】:
-
您是否有特殊原因要推出自己的哈希算法?
-
关于正确执行自己的散列、加密、日期时间处理(可能还有更多)实现的规则 #1:
DON'T- 除非您完全是专家。使用已经大量存在的工具 -
唯一的原因是我需要一个特定长度的哈希字符串。对于我的用例来说,安全性并不那么重要,而且碰撞问题也很低;我需要将名称转换为 30 个字符的哈希字符串。