-1

Python で、パスワード ジェネレーターを書きたいと思います。

優れた強力なパスワードを作成するには、プログラムにどのような情報を入力する必要があると思いますか?

答えは一文で十分です。思考プロセスを開始したいだけです。

4

5 に答える 5

5

xkcdコミックの精神で...

>>> import random
>>> def password_gen():
...   with open('/usr/share/dict/words') as f:
...     words = [w.strip().lower() for w in f if w.strip().isalpha()]
...   while True:
...     yield ' '.join(random.sample(words, 4))
... 
>>> g = password_gen()
>>> next(g)
'mansion yodelling sumner coordination'
>>> next(g)
'proving velvetiest upload muggers'
>>> next(g)
'southey unfortunately longshoremen settings'
>>> next(g)
'inundated mules coevals vicious'
于 2013-01-24T05:43:32.403 に答える
2
import random

random.choice(['password', 'password1'])
于 2013-01-24T05:18:01.653 に答える
0

パスワードをランダムに生成することは、ほとんどの場合、悪い考えであることに注意してください。代わりに、長い一意のリセットキーを使用して、ある種のパスワードリセットアルゴリズムを実装します。たとえば、Andbrewsの回答に従ってuuidで生成されます。

ただし、クライアント/上司が単に理由を聞くことを拒否したためなど、何らかの理由でリセット手順を実装できない場合は、少なくとも、ユーザーが新しいパスワードを受け取ったら、パスワードを次のように変更する必要がある機能を実装します。新しいもの。ユーザーに与えられたパスワード(紙または電子メールで、したがってすべての人が利用できる)は、ユーザーだけが知っているものに変更する必要があります。

もう1つ考えるべきことは、以前に送信されたパスワードを知っていても、パスワードを推測できないようにすることです。したがって、ランダムモジュールは使用しないでください。私は引用します:

Pythonは、コアジェネレーターとしてメルセンヌツイスターを使用します。53ビットの高精度フロートを生成し、周期は2**19937-1です。Cの基本的な実装は、高速でスレッドセーフです。メルセンヌツイスターは、現存する中で最も広範囲にテストされた乱数ジェネレーターの1つです。ただし、完全に決定論的であるため、すべての目的に適しているわけではなく、暗号化の目的にはまったく適していません。

代わりに、ランダムパスワードの基礎は。である必要がありますos.urandom()。ただし、バイナリバイトのシーケンスが生成されるため、変更する必要があります。モジュールはそのbinasciiために使用できます。hexlify()をお勧めします。これにより、入力が最も簡単なパスワードが作成され、奇妙な文字がまったく表示されなくなります。

>>> import os
>>> import binascii

>>> binascii.hexlify(os.urandom(10)).strip()
'7b2d0d5e40c18938bca9'
于 2013-01-24T05:48:28.410 に答える
0

最初に、生成されたパスワードに選択する文字を定義します。string モジュールで定義された定数がここで役立つ場合があります。次に、random モジュールを使用して、これらの文字をランダムに選択します。次に例を示します。

import string
import random

def random_password(alphabet=string.ascii_letters+string.digits, length=8):
    return ''.join(random.sample(alphabet, length))


>>> random_password()
'KwYGBtFb'
>>> random_password()
'CJOSx8tj'
>>> random_password()
'62BNJyX5'
于 2013-01-24T05:17:50.487 に答える
0

uuid モジュールを使用できます

import uuid
print uuid.uuid4()
于 2013-01-24T05:21:16.547 に答える