【发布时间】:2012-09-20 04:41:16
【问题描述】:
我只是计算机科学的初学者。我学到了一些关于运行时间的知识,但我不能确定我的理解是正确的。所以请帮助我。
所以整数分解目前不是多项式时间问题,但素性检验是。假设要检查的数字是n。如果我们运行一个程序只是为了确定从 1 到 sqrt(n) 的每个数字是否可以整除 n,如果答案是肯定的,则存储该数字。我认为这个程序是多项式时间,不是吗?
我错的一种可能方式是分解程序应该找到所有素数,而不是找到第一个素数。所以也许这就是原因。
然而,在公钥密码学中,找到一个大数的质因数对于攻击密码学至关重要。由于通常一个大数(公钥)只是两个素数的乘积,所以找到一个素数就意味着找到另一个素数。这应该是多项式时间。那么为什么攻击很难或不可能呢?
【问题讨论】:
-
你首先说的是检查数字是否是素数。
-
因为数字很大!
-
如果您认为算法 X 具有多项式复杂性,请尝试编写表示其复杂性的多项式。如果你成功了,那么 X 具有多项式复杂性,如果你失败了,你可能想用 X 没有多项式复杂性的想法来安慰自己,这比你没有找到(或一个)多项式的想法更令人欣慰。但是,更严重的是,尝试根据整数中的位数写一个整数分解复杂性的方程,并研究它的形式。
标签: performance cryptography rsa public-key-encryption factorization