Rabin-Miller 的每次迭代都会将数字复合的几率降低 1/4。
所以在 64 次迭代之后,在 2^128 中只有 1 次机会是复合数。
假设您将这些用于公钥算法(例如 RSA),并假设您将其与使用(例如)128 位密钥的对称算法相结合,对手可以以该概率猜测您的密钥。
底线是选择迭代次数以将该概率置于您为算法选择的其他大小的范围内。
[更新,详细]
答案完全取决于您要将这些数字用于什么算法,以及针对这些算法的最知名的攻击是什么。
例如,根据维基百科:
截至 2003 年,RSA Security 声称 1024 位 RSA 密钥的强度等同于 80 位对称密钥、2048 位 RSA 密钥等同于 112 位对称密钥以及 3072 位 RSA 密钥等同于 128 位对称密钥。
因此,如果您打算使用这些素数来生成(例如)1024 位 RSA 密钥,那么没有理由运行超过 40 次左右的 Rabin-Miller 迭代。为什么?因为当您遇到故障时,攻击者无论如何都可以破解您的一个密钥。
当然,如果时间允许,没有理由不执行更多的迭代。这样做没有多大意义。
另一方面,如果您要生成 2048 位 RSA 密钥,那么 Rabin-Miller 的 56 次(左右)迭代更合适。
密码学通常构建为原语的组合,如素数生成、RSA、SHA-2 和 AES。如果你想让其中一个原语比其他原语强 2^900 倍,你可以,但这有点像在小木屋上放一扇 10 英尺高的钢拱门。
你的问题没有固定的答案。这取决于进入您的加密系统的其他部分的强度。
综上所述,2^-128 的概率非常小,所以我可能只使用 64 次迭代 :-)。