是否有任何已知的哈希算法,对于类似的输入返回类似的输出? 我需要它来创建“门票”而不用检查它们。我的想法是我创建令牌携带(userID和时间戳)(不可逆),并将此令牌与userID一起传递,并且能够检查,如果令牌已经给出UserID,并且例如,是在10分钟前创建的 -
例如,改变前4个字节会产生明显不同的令牌,但是如果最后4个字节发生变化,则散列函数会返回类似的令牌。答案 0 :(得分:2)
嗯。我可能会尝试HMACs:生成一个只为您的应用程序所知的密钥。每当你需要分发新的“门票”时,
然后将三重(用户ID,时间戳,摘要)分发给其他方。为了验证这样的票,只需这样做:
生成的摘要必须匹配,否则有人会尝试向您显示篡改的票证。这是安全的,因为只有您的应用程序知道密钥,因此可以生成合适的HMAC摘要。由于时间戳信息对您来说很明显,您可以根据某个时间窗口或其他任何方式进行所有必需的测试。