我有一把钥匙,可以认为是秘密的。我正在传递一个字符串,我必须假定用户能够篡改它,并且我想验证它是否被篡改。
我可以使用mcrypt_encrypt存储结果,在读取时使用mcrypt_decrypt,或者我可以使用$hash = hash('sha256', $key . $string);并存储$hash . $string,然后验证散列。问题是a)速度--有没有一个基准来比较各种加密算法的解密速度与散列的速度? b)如果我散列了几个都有相同前缀的字符串,这会削弱散列吗?
发布于 2011-02-13 03:11:13
我太傻了,我需要使用的函数是使用密钥hash_hmac进行散列。
发布于 2011-02-13 03:03:12
对于你的问题的第二部分:不,它不应该削弱散列。如果用户想要篡改字符串,他们必须找到另一个散列为相同值的字符串。散列的设计使得即使是非常相似的字符串也会散列成不同的值。
对于第一个问题,这取决于你的机器和其他一堆东西,换成几个不同的哈希算法并为你的特定机器运行一些基准测试应该是相当容易的。
https://stackoverflow.com/questions/4979958
复制相似问题