What do most attacks on hash functions involve?

Finding Collisions
Pre-generating millions of hashes and comparing them to the plain text that generates it.
Really good random guessing.
A and B

A and C

B and C

A and B

The most common attacks on hash functions involve A and B: finding collisions and pre-generating millions of hashes and comparing them to the plain text that generates it. However, "really good random guessing" (option C) is not a typical attack method for hash functions. So the correct answer is A and B.

Attacks on hash functions typically involve A and B: finding collisions and pre-generating millions of hashes and comparing them to the plain text that generates it.

1. Finding Collisions: One common attack on hash functions is finding collisions, which means finding two different inputs that produce the same hash output. This can be done by analyzing the mathematical properties of the hash function and searching for patterns or vulnerabilities that allow collisions to be found. Finding collisions is a significant concern in cryptographic applications, as it can lead to security vulnerabilities.

2. Pre-generating millions of hashes and comparing them to the plain text: Another common attack is pre-generating a large number of hashes using various inputs and comparing them to the hash value of the plaintext that generates it. This is often done by generating a database of precomputed hashes, called a "rainbow table," which can be rapidly searched to find a matching hash. This method allows an attacker to bypass the computational effort of hashing large amounts of data during the attack, significantly reducing the time needed to find a match.

3. Really good random guessing: While random guessing is technically a possible attack method, it is highly unlikely to be effective against well-designed hash functions. Good hash functions are designed to produce output that is unpredictable and uniformly distributed, making it extremely difficult to guess the correct input based on the hash output alone. Random guessing is generally not a practical or efficient method for attacking hash functions.

Therefore, the correct answer is A and B: Most attacks on hash functions involve finding collisions and pre-generating millions of hashes to compare with the plaintext.