详解Python random.getrandbits(生成随机整数)函数的使用方法

  • Post category:Python

random.getrandbits(n) 是 Python 中的一个随机数函数,它的作用是产生一个 n 位的随机整数。

在使用该函数前,首先需要导入 random 模块:

import random

使用方法很简单,只需输入参数 n,便可以产生 n 位长度的随机整数,示例代码如下:

import random

number = random.getrandbits(16)
print(number)

输出结果类似于: 56661

实例1:生成指定宽度的二进制随机整数

如果想要生成一个指定宽度的二进制随机整数,可以通过使用 getrandbits() 函数来实现。例如,下面的例子将随机生成一个 16 位的二进制数:

import random

binary_number = bin(random.getrandbits(16))
print(binary_number)

输出结果类似于:0b1010100111110101

实例2:使用 random.getrandbits() 生成公钥和私钥

在密码学领域中,random.getrandbits() 函数可用于生成公钥和私钥。

import random

def generate_keys(psize, qsize):
    p = generate_large_prime(psize)
    q = generate_large_prime(qsize)
    n = p * q
    phi = (p - 1) * (q - 1)
    e = 65537
    while gcd(e, phi) != 1:
        e = random.getrandbits(16)
    d = inverse(e, phi)
    return ((e, n), (d, n))

def generate_large_prime(size):
    while True:
        p = random.getrandbits(size - 1) | (1 << size - 2) | 1
        if is_prime(p):
            return p

def is_prime(n, k=128):
    if n < 2:
        return False
    for i in range(k):
        a = random.randint(1, n - 1)
        if pow(a, n - 1, n) != 1:
            return False
    return True

上面是生成 1024 位公钥和私钥的 Python 代码。其中,random.getrandbits(16) 用于选取一个 16 位的随机数作为公钥。当选取的整数和 phi 的最大公因数等于 1 时,这个随机数即是公钥。