2014-09-28 65 views
0

好的,我找到了一個隨機的密碼生成器,它的功能非常好,但我想知道兩件事。 1.爲什麼最多隻能打印32個字符,我怎樣才能打印更多? 2.(可選,但它與第一​​個連接)爲什麼它總是在中間打印四個數字?此腳本爲什麼只打印最多32個字符?

這是代碼。

import uuid 

def my_random_string(string_length=100): 
    """Returns a random string of length string_length.""" 
    random = str(uuid.uuid4()) # Convert UUID format to a Python string. 
    random = random.upper() # Make all characters uppercase. 
    random = random.replace("-","") # Remove the UUID '-'. 
    return random[0:string_length] # Return the random string. 

while True: 
    print(my_random_string(100)) # For example, D9E50C 

my_random_string() 
+1

這是在很多層面上只是糟糕的代碼... – MattDMo 2014-09-28 19:02:45

回答

1

如果你想要一個隨機密碼生成器,寫一個。不要使用UUID,這不僅僅是因爲長度的複雜性(它將以32個字節爲單位),而是因爲密碼只包含數字和A-F。

可以使用的線沿線的東西:

import random 
import string 
def passgen(n = 12): 
    possible_lettters = string.ascii_letters + string.digits 
    return ''.join(random.choice(possible_lettters) \ 
        for x in range(n)) 

In [92]: print(passgen(30)) 
cjBQgGJO5nlEyMlP2fdiZ6ra4IvDzF 

注意possible_lettters這裏由大寫和小寫字母,使一個區分大小寫的密碼。但你當然可以用string.ascii_uppercase代替string.ascii_letters來獲取只包含大寫字符的密碼。

+0

是完整的,你應該加上'。 upper()'結束。 – 2014-09-28 18:53:35

+1

@BurhanKhalid我想要大寫密碼,我會選擇'string.ascii_uppercase'而不是'ascii_letters'。我故意選擇了所有字母,以表明您可以實現區分大小寫的密碼。 – Korem 2014-09-28 18:56:28

+1

OP特別使用'.upper()' - 所以你應該將你的評論添加到你的答案中,因爲它解釋得更好。 – 2014-09-28 18:59:14

0

隨機密碼生成器,將與用戶生成一個密碼 - 字符定義的數字:

from random import randint 
    def passwordgen(characters): 
     chars = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM' 
     password = '' 
     for i in range(0, characters): 
      password = password + chars[randint(0, len(chars))] 
     return password 
相關問題