En criptografía , un predicado duro para una función unidireccional es una función que toma el valor 0 o 1, mientras que su valor es fácil de calcular sabiendo y difícil de calcular sabiendo solo . Formalmente, una función polinomialmente computable es un predicado difícil para una función si la variable aleatoria es difícil de calcular a partir de la variable aleatoria , donde es una variable aleatoria uniformemente distribuida en .