Python 使用素数生成随机密码

Python 使用素数生成随机密码,python,security,scripting,numbers,Python,Security,Scripting,Numbers,我正在做一个大学项目,从打印出两个给定输入之间的所有素数开始。后来有人告诉我,它必须与我的课程“网络管理”相关,因此我想在脚本末尾添加一个密码生成器,以确保网络安全 我已经把所有的代码都写出来了,但是我有一个问题,就是不能在我打印出来的列表中使用随机素数。它只使用打印的最后一个数字,我明白为什么,但无论如何,我可以使它使用一个随机素数,还是我必须将数字存储在某个地方 #A program to count the prime numbers from a given start to a giv

我正在做一个大学项目,从打印出两个给定输入之间的所有素数开始。后来有人告诉我,它必须与我的课程“网络管理”相关,因此我想在脚本末尾添加一个密码生成器,以确保网络安全

我已经把所有的代码都写出来了,但是我有一个问题,就是不能在我打印出来的列表中使用随机素数。它只使用打印的最后一个数字,我明白为什么,但无论如何,我可以使它使用一个随机素数,还是我必须将数字存储在某个地方

#A program to count the prime numbers from a given start to a given end


#importing math function
import math
import os, random, string
#Input the number to start counting from
Starting_number = input("Enter the starting number: ")




#Input the number to end the count on.
Ending_number = input("Enter the number you want to count up to: ")

#if Starting_number is less than 0 it will print out a suitable message.
if Starting_number < 0:
    print 'Invalid entry, please enter a positiv number. \nWill count from ',Starting_number, 'to 0 and begin prime number count to',Ending_number, '.'

#If Ending_number is less than or equals to 0 then it will print out a suitable message.
if Ending_number <= 0:
    print 'Invalid entry on last input \nPlease enter two positive numbers for the count to work.'

#Starting loop as long as the current count is between Starting_number and Ending_number
for num in range(Starting_number, Ending_number):

    #
    if all(num%i !=0 for i in range(2,num)):

        print num





if num >= 1 and num <= 100:
    length = 4
    chars = string.ascii_letters + string.digits + '!@#$%^&*()'
    random.seed = (os.urandom(1024))

    print ''.join(random.choice(chars) for i in range(length))


if num >= 101 and num <= 200:
    length = (Ending_number / Starting_number) * 5 + 11
    if length >= num:
        length = num / 100
    chars = string.ascii_letters + string.digits + '!@#$%^&*()'
    random.seed = (os.urandom(1024))

    print ''.join(random.choice(chars) for i in range(length))

当你检测到素数时,把它们添加到一个列表中

而不仅仅是

print num
将其添加到列表中,如下所示:

primes.append(num)
然后,您可以从“素数”列表中随机选择一项:

from random import choice
print choice(primes)

我真的很想把它作为一个评论来添加,但是我没有足够的积分来添加评论。对于密码生成器,您不希望它是素数。你应该随机选择一个数字。如果你有一个32位的数字,如果这个数字在整个32位空间中是随机的,那么你就有了更多的熵。如果你把它限制为素数,你就大大减少了空间。与您的要求没有直接关系,但了解可能很有用。

避免在python2中输入。它不接受数字作为输入。它执行python代码。如果在提示输入起始号码时尝试输入[1,2,3],您将看到一个意想不到的错误。此外,用户还可以插入诸如_import _os.systemkill my machine命令之类的内容,而真正糟糕的事情可能会发生。要请求整数,只需使用intraw_input。。。。或浮点数输入。。。对于浮点数。在python3中,名为input的函数实际上是原始输入,因此必须添加int。。不管怎样打电话。