我有一个相当抽象的问题:如果输入稍有变化,通常的哈希算法(加密算法和非加密算法)都会发生巨大变化。
Digest::SHA1.hexdigest 'hello'
=> "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d"
Digest::SHA1.hexdigest 'hello!'
=> "8f7d88e901a5ad3a05d8cc0de93313fd76028f8c"
当输入略有变化时,是否存在不改变输出的哈希算法?
理想情况下,此类算法应具有tolerance
设置,该设置应该告知在更改输出之前哈希应该容忍多少输入更改。
例如,如果输入容差为70%,这些“你好”和“你好!”字符串应该产生相同的散列输出,但如果它是95%,那么这两个字符串应该产生不同的(略微)输出。
也许它根本不叫哈希,但这个领域对我来说是个未知数。
答案 0 :(得分:1)
你可能会研究文档比较算法。这更接近你需要的算法类。
见
从那里你可以计算出改变的百分比。这将要求您保留原始文本以进行比较 - 不是一个小的散列值。但我没有看到任何可能的方式存储一个小值,如哈希,对你有用。