非正式地,一个函数 是一个单向函数,如果
1. 的描述是公开的,并且其操作不需要任何秘密信息。
2. 给定 ,很容易计算 。
3. 给定 ,在 的范围内,很难找到一个 使得 。更准确地说,任何解决 P 问题 的有效算法以可忽略的概率成功反转 。
单向函数的存在性尚未被证明。如果为真,则意味着 。因此,它将回答 复杂性理论 NP 问题,即所有表面上的 NP 问题是否实际上是 P 问题。然而,许多推测的单向函数在商业和工业中被常规使用。例如,推测(但未证明)以下是单向函数:
1. 因子分解问题:,对于随机选择的素数 。
2. 离散对数问题
对于 为 的生成元,其中 为某个素数。
3. 离散根提取问题:,对于 在 中, 在 中且与 互素,以及 为素数。 这是通常被称为 RSA 加密 的函数。
4. 子集和问题:,对于 ,以及 -bit 整数 。
5. 二次剩余 问题。