Pythonでランダムな16文字のbase-62ソルトを作成するにはどうすればよいですか? プロトコルに必要ですが、どこから始めればよいかわかりません。ありがとう。
質問する
28069 次
7 に答える
35
>>> import random
>>> ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
>>> chars=[]
>>> for i in range(16):
chars.append(random.choice(ALPHABET))
>>> "".join(chars)
'wE9mg9pu2KSmp5lh'
これはうまくいくはずです。
于 2011-03-14T01:57:17.467 に答える
33
UUID は使用しないでください。それらは一意であり、ランダムではありません。CreateUUID() 関数をソルトとして使用するのは良い考えですか?
あなたのソルトは、暗号的に安全な乱数を使用する必要があります.python 2.4+では、os.urandomがこれらのソースです(適切なタイミングソースがある場合)。
# for some given b62encode function
salt = b62encode(os.urandom(16))
また、私よりもはるかに専門家によってよく知られており、精査されているbcryptまたはその他の素晴らしい暗号化/ハッシュライブラリのジェネレーターを使用することもできます.
import bcrypt
salt = bcrypt.gensalt()
# will be 29 chars you can then encode it however you want.
于 2012-05-04T09:11:51.040 に答える
0
import random
import string
def get_salt(size=16, chars=None):
if not chars:
chars = ''.join(
[string.ascii_uppercase,
string.ascii_lowercase,
string.digits]
)
return ''.join(random.choice(chars) for x in range(size))
于 2016-10-19T14:14:13.357 に答える
0
base64 で:
import random, base64, struct
rand_float = random.SystemRandom().random()
salt = base64.b64encode((struct.pack('!d', rand_float)))
これは12文字になります
于 2014-02-18T11:28:15.330 に答える
-1
私はちょっと好きです:
import md5, uuid
m = md5.md5()
m.update(uuid.uuid4())
print m.digest()[:16]
それは非常にランダムです。
于 2011-03-14T02:14:21.243 に答える