Случайный хеш в Python

Каков самый простой способ создания случайного хэша (MD5) в Python?

70 голосов | спросил mistero 10 J0000006Europe/Moscow 2009, 20:05:02

7 ответов


0

md5-хэш - это просто 128-битное значение, поэтому если вы хотите случайное:

import random

hash = random.getrandbits(128)

print "hash value: %032x" % hash

Я, правда, не вижу в этом смысла. Может быть, вам стоит уточнить, зачем вам это нужно ...

ответил sth 10 J0000006Europe/Moscow 2009, 20:09:12
0

Это работает как для Python 2.x, так и для 3.x

import os
import binascii
print(binascii.hexlify(os.urandom(16)))
'4a4d443679ed46f7514ad6dbe3733c3d'
ответил Buttons840 22 MaramThu, 22 Mar 2012 08:19:41 +04002012-03-22T08:19:41+04:0008 2012, 08:19:41
0

secrets модуль был добавлен в Python 3.6+. Он обеспечивает криптографически безопасные случайные значения одним вызовом. Функции принимают необязательный аргумент nbytes, значение по умолчанию - 32 (байты * 8 бит = 256-битные токены). MD5 имеет 128-битные хэши, поэтому предоставьте 16 для "MD5-подобных" токенов.

>>> import secrets

>>> secrets.token_hex(nbytes=16)
'17adbcf543e851aa9216acc9d7206b96'

>>> secrets.token_urlsafe(16)
'X7NYIolv893DXLunTzeTIQ'

>>> secrets.token_bytes(128 // 8)
b'\x0b\xdcA\xc0.\x0e\x87\x9b`\x93\\Ev\x1a|u'
ответил Nick T 18 J000000Tuesday17 2017, 01:36:43
0

Еще один подход. Вам не нужно форматировать int, чтобы получить его.

import random
import string

def random_string(length):
    pool = string.letters + string.digits
    return ''.join(random.choice(pool) for i in xrange(length))

Предоставляет гибкость в отношении длины строки.

>>> random_string(64)
'XTgDkdxHK7seEbNDDUim9gUBFiheRLRgg7HyP18j6BZU5Sa7AXiCHP1NEIxuL2s0'
ответил Matthew Taylor 26 Jam1000000amThu, 26 Jan 2012 02:10:22 +040012 2012, 02:10:22
0

Еще один подход к этому конкретному вопросу:

import random, string

def random_md5like_hash():
    available_chars= string.hexdigits[:16]
    return ''.join(
        random.choice(available_chars)
        for dummy in xrange(32))

Я не говорю, что это быстрее или предпочтительнее любого другого ответа; просто другой подход:)

ответил tzot 12 J0000006Europe/Moscow 2009, 02:52:23
0
import uuid
from md5 import md5

print md5(str(uuid.uuid4())).hexdigest()
ответил Sam 26 J000000Friday13 2013, 22:03:28
0
import os, hashlib
hashlib.md5(os.urandom(32)).hexdigest()
ответил gizzmole 31 Mayam17 2017, 02:44:15

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132