[python] Python의 임의 해시

Python에서 임의 해시 (MD5)를 생성하는 가장 쉬운 방법 은 무엇입니까 ?



답변

md5-hash는 128 비트 값이므로 임의의 값을 원하는 경우 :

import random

hash = random.getrandbits(128)

print("hash value: %032x" % hash)

그래도 요점은 모르겠습니다. 왜 이것이 필요한지 자세히 설명해야합니다 …


답변

나는 당신이 찾고있는 것이 보편적 인 고유 식별자라고 생각합니다. 그러면 파이썬의 모듈 UUID가 당신이 찾고있는 것입니다.

import uuid
uuid.uuid4().hex

UUID4는 md5 합계와 길이가 같은 임의의 고유 식별자를 제공합니다. 16 진수는 uuid 객체를 반환하는 대신 16 진수 문자열로 나타냅니다.

http://docs.python.org/2/library/uuid.html


답변

이것은 python 2.x 및 3.x 모두에서 작동합니다.

import os
import binascii
print(binascii.hexlify(os.urandom(16)))
'4a4d443679ed46f7514ad6dbe3733c3d'


답변

secrets모듈은 파이썬 3.6에서 추가되었다. 단일 호출로 암호화 된 안전한 임의 값을 제공합니다. 함수는 선택적 nbytes인수를 취하며 기본값은 32 (바이트 * 8 비트 = 256 비트 토큰)입니다. MD5에는 128 비트 해시가 있으므로 “MD5와 유사한”토큰에 16 개를 제공하십시오.

>>> 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'


답변

또 다른 접근 방식. 그것을 얻기 위해 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'


답변

이 특정 질문에 대한 또 다른 접근 방식 :

import random, string

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

나는 그것이 다른 대답보다 더 빠르거나 바람직하다고 말하는 것이 아닙니다. 그것은 또 다른 접근 방식입니다 🙂


답변

import uuid
from md5 import md5

print md5(str(uuid.uuid4())).hexdigest()