crypto-numbers-0.1.2: Cryptographic numbers: functions and algorithms

PortabilityGood
Stabilityexperimental
MaintainerVincent Hanquez <vincent@snarc.org>
Safe HaskellNone

Crypto.Number.Prime

Description

 

Synopsis

Documentation

generatePrime :: CPRG g => g -> Int -> (Integer, g)Source

generate a prime number of the required bitsize

generateSafePrime :: CPRG g => g -> Int -> (Integer, g)Source

generate a prime number of the form 2p+1 where p is also prime. it is also knowed as a Sophie Germaine prime or safe prime.

The number of safe prime is significantly smaller to the number of prime, as such it shouldn't be used if this number is supposed to be kept safe.

isProbablyPrime :: CPRG g => g -> Integer -> (Bool, g)Source

returns if the number is probably prime. first a list of small primes are implicitely tested for divisibility, then a fermat primality test is used with arbitrary numbers and then the Miller Rabin algorithm is used with an accuracy of 30 recursions

findPrimeFrom :: CPRG g => g -> Integer -> (Integer, g)Source

find a prime from a starting point with no specific property.

findPrimeFromWith :: CPRG g => g -> (g -> Integer -> (Bool, g)) -> Integer -> (Integer, g)Source

find a prime from a starting point where the property hold.

primalityTestNaive :: Integer -> BoolSource

Test naively is integer is prime. while naive, we skip even number and stop iteration at i > sqrt(n)

primalityTestMillerRabin :: CPRG g => g -> Int -> Integer -> (Bool, g)Source

Miller Rabin algorithm return if the number is probably prime or composite. the tries parameter is the number of recursion, that determines the accuracy of the test.

primalityTestFermatSource

Arguments

:: Int

number of iterations of the algorithm

-> Integer

starting a

-> Integer

number to test for primality

-> Bool 

Probabilitic Test using Fermat primility test. Beware of Carmichael numbers that are Fermat liars, i.e. this test is useless for them. always combines with some other test.

isCoprime :: Integer -> Integer -> BoolSource

Test is two integer are coprime to each other