在RSA加密中生成e值

时间:2015-04-24 22:12:56

标签: c++ encryption rsa

我已经生成了p,q,n和totient,并且需要生成e 1 < e < totientetotient是互质的。我正在使用我的代码遇到的问题是我首先生成totient(正常(p-1)*(q-1)方式)但是当我尝试生成一个coprime 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是否具有任意数量的可能值使它成为互质的。我只找到了检查值是否为互质的方法,但是如果已存在的数字存在互补的互质值则不会。

1 个答案:

答案 0 :(得分:0)

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