14

Is there a difference between PRF and a hash function?

For example: Creation of a secret key is using PRF and creating a secret key is using hash function.

e-sushi
  • 17,891
  • 12
  • 83
  • 229
user13342
  • 141
  • 1
  • 3

1 Answers1

11

No, the two primitives are definitely not the same.

A pseudorandom function is a keyed function that is (computationally) indistinguishable from a function chosen at random from all functions with matching domain and range as long as the key remains secret.

On the other hand, a cryptographic hash function is a function with either a publicly known key (in theory) or no key at all (in practice) that is compressing and collision resistant. That means, it maps long inputs to outputs of a fixed length and it is hard to find two inputs that map to the same output.

Maeher
  • 6,818
  • 1
  • 33
  • 44
  • i thought hash functions resemble to a random oracle (in theory), why would they have a public key in theory? – Subhayan May 02 '14 at 23:28
  • 1
    No, hash functions are only modeled as random oracles for proofs in the random oracle model. If we work in the standard model, a hash function is only assumed to be collision resistant. The key of a hash function stems from a technicality of defining collision resistance. The problem is that it is (almost) impossible to define collision resistance for a single function. Therefore collision resistance is defined for a function family, and the key is required to select a member of that family. – Maeher May 03 '14 at 08:20