# NAME Math::ProvablePrime - Generate a provable prime number, in pure Perl # SYNOPSIS #The returned prime will be 512 bits long #(i.e., the first and last bits will be 1) #and will be an instance of Math::BigInt. # my $prime = Math::ProvablePrime::find(512); # DISCUSSION There’s not much more to say: this module returns a prime number of a specified bit length. The specific algorithm is Maurer’s algorithm. The logic in this module is ported from a Python implementation first posted at [http://s13.zetaboards.com/Crypto/topic/7234475/1/](http://s13.zetaboards.com/Crypto/topic/7234475/1/). # PLANNED DEPRECATION This module will be deprecated once [Math::Prime::Util](https://metacpan.org/pod/Math::Prime::Util) is installable without a compiler. (There is pure-Perl logic in that distribution; the install logic just needs to be tweaked.) [Math::Prime::Util](https://metacpan.org/pod/Math::Prime::Util) is faster and has a maintainer who understands the mathematics behind all of this much better than I do. [Math::ProvablePrime](https://metacpan.org/pod/Math::ProvablePrime) is too slow for its intended purpose (i.e., to provide pure-Perl primes), and really, I don’t have the mathematical background that would justify its continued maintenance. If you have any objection, please let me know. # SPEED This module is too slow for practical use in pure Perl. If a recognized alternate backend for [Math::BigInt](https://metacpan.org/pod/Math::BigInt) is available, though, then this module will use that to achieve reasonable (though still unimpressive) speed. Recognized alternate backends are (in order of preference): - [Math::BigInt::GMPz](https://metacpan.org/pod/Math::BigInt::GMPz) - [Math::BigInt::GMP](https://metacpan.org/pod/Math::BigInt::GMP) - [Math::BigInt::LTM](https://metacpan.org/pod/Math::BigInt::LTM) - [Math::BigInt::Pari](https://metacpan.org/pod/Math::BigInt::Pari) [Math::BigInt::BitVect](https://metacpan.org/pod/Math::BigInt::BitVect) and [Math::BigInt::FastCalc](https://metacpan.org/pod/Math::BigInt::FastCalc) are also recognized, but these don’t seem to achieve speed that’s practical for use in, e.g., creation of RSA keys. # LICENSE This module is released under the same license as Perl.