给定一个密钥和一个字符串,我怎样才能快速确保字符串没有被篡改?

我有一个密钥,可以认为是密钥。 我正在传递一个字符串,我必须假设用户能够篡改它并且我想验证它没有被篡改。</ p>

我可以使用像 mcrypt_encrypt </ code这样的东西 >在读取时存储结果 mcrypt_decrypt </ code>,或者我可以使用 $ hash = hash('sha256',$ key。$ string); </ code>并存储 $ hash。 $ string </ code>然后验证哈希。 问题是:a)速度 - 有没有一个基准比较各种加密算法速度与散列的解密速度b)如果我散列几个都具有相同前缀的字符串,是否会削弱散列?</ p>

</ div>

展开原文

原文

I have a key, which can be considered secret. I am passing around a string, I must presume the user is able to tamper it and I want to verify it is not tampered.

I could use something like mcrypt_encrypt store the result, mcrypt_decrypt when reading or I could use $hash = hash('sha256', $key . $string); and store $hash . $string and then verify the hash. The question is a) speed of this -- is there a benchmark comparing the decrypt speed of various crypto algorithm speeds vs a hash b) if I hash several string which all have the same prefix, will that weaken the hash?

dongtuo4723
dongtuo4723 注意补充一点作为答案?
9 年多之前 回复
duan0531
duan0531 你可能想读这个:eecs.umich.edu/~aprakash/eecs588/handouts/...
9 年多之前 回复

2个回答



愚蠢的我,使用键 hash_hmac </ code>进行散列是我需要使用的功能。</ p>

</ div>

展开原文

原文

Silly me, for hashing with a key hash_hmac is the function I needed to use.



问题的第二部分:不,它不应该削弱哈希值。 如果用户想要篡改字符串,则必须找到另一个字符串,该字符串具有相同的值。 散列的设计使得即使非常相似的字符串也会散列到不同的值。</ p>

对于第一个问题,它取决于你的机器和其他一些东西,它应该很容易交换 在几个不同的哈希算法中,为您的特定机器运行一些基准测试。</ p>
</ div>

展开原文

原文

To the second part of your question: no it shouldn't weaken the hash. If a user wanted to tamper with the string they'd have to find another string that hashed to the same value. Hashes are designed such that even very similar strings will hash to different values.

To the first question, it depends on your machine and a bunch of other things, it should be pretty easy to swap in a couple different hash algorithms and run some benchmarks for your specific machine.

doushihu5475
doushihu5475 是的,从理论上讲,哈希是如何设计的,但有没有研究显示相同的前缀不会削弱哈希? 我大多只是好奇。
9 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐