数论与密码学中的素数生成及素性测试
在密码学领域,素数的生成和素性测试是非常重要的基础操作。本文将详细介绍随机素数的生成方法以及常用的素性测试算法。
1. 随机素数的生成
生成随机 $n$ 位素数的一种自然方法是重复选择随机的 $n$ 位整数,直到找到一个素数为止,最多尝试 $t$ 次。以下是该过程的高级概述算法:
ALGORITHM 9.31
Generating a random prime – high-level outline
Input: Length n; parameter t
Output: A uniform n-bit prime
for i = 1 to t:
p′ ←{0, 1}n−1
p := 1∥p′
if p is prime return p
return fail
该算法通过将 $p$ 的最高位固定为 “1”,确保输出的是长度恰好为 $n$ 的整数。
为了使该算法成为一个高效(即时间复杂度为 $n$ 的多项式)的素数生成算法,我们需要解决两个问题:
1. 一个均匀的 $n$ 位整数是素数的概率。
2. 如何高效地测试一个给定的整数 $p$ 是否为素数。
1.1 素数的分布
素数定理给出了给定长度的整数中素数所占比例的较为精确的界限。对于任意 $n > 1$,$n$ 位整数中素数的比例至少为 $1/3n$。
如果我们设置 $t = 3n^2$,那么在算法的所有 $t$ 次迭代中都没有选择到素数的概率至多为: <
素数生成与Miller-Rabin测试
超级会员免费看
订阅专栏 解锁全文
18

被折叠的 条评论
为什么被折叠?



