RSA加密生成e值

Generating e value in RSA Encryption

我已经生成了 p、q、n 和 totient,并且需要生成 e,其中 1 < e < totiente 以及 totient 互质。我的代码 运行 遇到的问题是我首先生成 totient(正常 (p-1)*(q-1) 方式)但是当我尝试生成互质 e 时,它​​通常会永远运行此代码

const mpz_class RsaKeys::compute_e(mpz_class totient) const {

  dgrandint e(bits_);
  while ((e.get_mpz_class() < totient) ||
     !is_coprime(e.get_mpz_class(), totient)) {
 std::cerr<<e.get_mpz_class()<< " is not coprime with "<<totient<<std::endl;
 e.reroll();
}
return e.get_mpz_class();

我正在测试 8-32 的低位整数,实际上需要处理 1024 位值,但我需要一种方法来首先检查生成的 totient 是否具有任意数量的可能值那将使它互质。我只找到了检查值是否互质的方法,但如果已经存在的数字存在互补互质值则没有。

e 的值不需要是随机的,实际上大多数 RSA 系统使用少数常见 e 值之一,使用最广泛的是 65537。