Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/site-packages/rsa/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/site-packages/rsa/__pycache__/prime.cpython-38.pyc
U

O��g��@s�dZddlZddlZddgZeeed�dd�Zeed�d	d
�Zeeed�dd
�Z	eed�dd�Z
eed�dd�Zeeed�dd�Ze
dkr�ed�ddlZed�D]4Ze��\ZZer�q�eddkr�er�ede�q�ed�dS)z�Numerical functions related to primes.

Implementation based on the book Algorithm Design by Michael T. Goodrich and
Roberto Tamassia, 2002.
�N�getprime�are_relatively_prime)�p�q�returncCs|dkr|||}}q|S)zPReturns the greatest common divisor of p and q

    >>> gcd(48, 180)
    12
    r�)rrrr�6/opt/cppython/lib/python3.8/site-packages/rsa/prime.py�gcdsr	)�numberrcCs4tj�|�}|dkrdS|dkr$dS|dkr0dSdS)a�Returns minimum number of rounds for Miller-Rabing primality testing,
    based on number bitsize.

    According to NIST FIPS 186-4, Appendix C, Table C.3, minimum number of
    rounds of M-R testing, using an error probability of 2 ** (-100), for
    different p, q bitsizes are:
      * p, q bitsize: 512; rounds: 7
      * p, q bitsize: 1024; rounds: 4
      * p, q bitsize: 1536; rounds: 3
    See: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf
    i�i�i��
)�rsa�commonZbit_size)r
Zbitsizerrr�get_primality_testing_rounds'sr)�n�krcCs�|dkrdS|d}d}|d@s2|d7}|dL}qt|�D]~}tj�|d�d}t|||�}|dks:||dkrtq:t|d�D]0}t|d|�}|dkr�dS||dkr�q:q�dSq:dS)a.Calculates whether n is composite (which is always correct) or prime
    (which theoretically is incorrect with error probability 4**-k), by
    applying Miller-Rabin primality testing.

    For reference and implementation example, see:
    https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test

    :param n: Integer to be tested for primality.
    :type n: int
    :param k: Number of rounds (witnesses) of Miller-Rabin testing.
    :type k: int
    :return: False if the number is composite, True if it's probably prime.
    :rtype: bool
    �F�rrT)�ranger�randnum�randint�pow)rr�d�r�_�a�xrrr�miller_rabin_primality_testingAs(
rcCs2|dkr|dkS|d@sdSt|�}t||d�S)z�Returns True if the number is prime, and False otherwise.

    >>> is_prime(2)
    True
    >>> is_prime(42)
    False
    >>> is_prime(41)
    True
    r>rr�r
rF)rr)r
rrrr�is_primevsr!)�nbitsrcCs*|dkst�tj�|�}t|�r|SqdS)aReturns a prime number that can be stored in 'nbits' bits.

    >>> p = getprime(128)
    >>> is_prime(p-1)
    False
    >>> is_prime(p)
    True
    >>> is_prime(p+1)
    False

    >>> from rsa import common
    >>> common.bit_size(p) == 128
    True
    rN)�AssertionErrorrrZread_random_odd_intr!)r"�integerrrrr�s)r�brcCst||�}|dkS)z�Returns True if a and b are relatively prime, and False if they
    are not.

    >>> are_relatively_prime(2, 3)
    True
    >>> are_relatively_prime(2, 4)
    False
    r)r	)rr%rrrrr�s

�__main__z'Running doctests 1000x or until failurei��dz%i timesz
Doctests done)�__doc__Z
rsa.commonrZrsa.randnum�__all__�intr	r�boolrr!rr�__name__�print�doctestr�count�testmodZfailuresZtestsrrrr�<module>s&5

F1le Man4ger