开发者

how to find the number of possibilities of a hash

开发者 https://www.devze.com 2023-03-01 10:04 出处:网络
if i have a hash say like this: 0d47ae开发者_如何学JAVAda9d97686ab3da96bae2c93d078a5ab253 how do i do the math to find out the number of possibilities to try if i start with 0000000000000000000000000

if i have a hash say like this: 0d47ae开发者_如何学JAVAda9d97686ab3da96bae2c93d078a5ab253

how do i do the math to find out the number of possibilities to try if i start with 0000000000000000000000000000000000000000 to 9999999999999999999999999999999999999999 which is the general length of a sha1.


The number of possibilities would be 2^(X) where X is the number of bits in the hash. In the normal hexadecimal string representation of the hash value like the one you gave, each character is 4 bits, so it would be 2^(4*len) where len is the string length of the hash value. In your example, you have a 40 character SHA1 digest, which corresponds to 160 bits, or 2^160 == 1.4615016373309029182036848327163e+48 values.


An SHA-1 hash is 160 bits, so there are 2^160 possible hashes.


Your hexadecimal digit range is 0 through f.

Then it's simply 16^40 or however many characters it contains


Recall that a hash function accepts inputs of arbitrary length. A good cryptographic hash function will seem to assign a "random" hash result to any input. So if the digest is N bits long (for SHA-1, N=160), then every input will be hashed to one of 2^N possible results, in a manner we'll treat as random.

That means that the expectation for finding a preimage for your hash result is running though 2^N inputs. They don't have to be specifically the range that you suggested - any 2^N distinct inputs are fine.

This also means that 2^N inputs don't guarantee that you'll find a preimage - each try is random, so you might miss your 1-in-2^N chance in every single one of those 2^N inputs (just like flipping a coin twice doesn't guarantee you'll get heads at least once). But you can figure out how many inputs are required to find a preimage for the hash with probability p or greater - with p being as close to one as you desire (just not actually 1).


maximum variations, with repeating and with attention to the order are defined as n^k. in your case this would mean 10^40, which can't be correct for SHA1. Reading Wikipedia it sais SHA1 has a max. complexity for a collision based attack of 2^80, using different technices researches were allready successfull with 2^51 collisions, so 10^40 seems a bit much.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号