Acak untuk apa saja? Atau untuk sebuah benda? Jika Anda hanya ingin MD5 acak, pilih saja beberapa angka.
samoz
Saya mengganti nama file sebelum mengupload dan menginginkan nama file seperti ini: timestamp_randommd5.extension Cheers!
mistero
5
Anda bisa mengganti namanya menjadi timestamp_randomnumber.ext. Sebenarnya tidak ada alasan mengapa md5 (randomnumber) akan lebih baik dari randomnumber itu sendiri.
1 untuk tidak menghitung hash yang relatif mahal dari bilangan acak: pendekatan ini 5x lebih cepat.
Nicolas Dumazet
11
+1 - pasti ini lebih baik dari jawaban saya, bisa digunakan juga seperti ini: hex (random.getrandbits (128)) [2: -1] ini memberi Anda keluaran yang sama dengan metode hexdigest md5.
Jiri
1
panggilan random.seed () tidak berguna, lebih atau kurang.
tzot
2
Saya akan menggunakan os.urandom karena menginginkan hash MD5 mungkin berarti menginginkan yang aman.
Tidak diketahui
9
Berikut cara melakukannya dengan os.urandom:''.join('%02x' % ord(x) for x in os.urandom(16))
FogleBird
97
Saya pikir apa yang Anda cari adalah pengenal unik universal. Lalu modul UUID di python adalah apa yang Anda cari.
import uuid
uuid.uuid4().hex
UUID4 memberi Anda pengenal unik acak yang memiliki panjang yang sama dengan jumlah md5. Hex akan mewakili adalah sebagai string hex alih-alih mengembalikan objek uuid.
Cara pengkodean heksadesimal ini tidak lagi berfungsi di Python 3.
Caramdir
1
Terima kasih. ini adalah cara terbaik untuk membuat kunci hash acak.
Jake
7
bekerja untuk 2.x dan 3.x: binascii.hexlify (os.urandom (16))
Clay
44
The secretsModul ditambahkan dengan Python 3.6+. Ini memberikan nilai acak yang aman secara kriptografis dengan satu panggilan. Fungsi mengambil nbytesargumen opsional , default adalah 32 (byte * 8 bit = token 256-bit). MD5 memiliki hash 128-bit, jadi berikan 16 untuk token "seperti MD5".
from hashlib import md5
plaintext = input('Enter the plaintext data to be hashed: ')# Must be a string, doesn't need to have utf-8 encoding
ciphertext = md5(plaintext.encode('utf-8').hexdigest())print(ciphertext)
Juga harus dicatat bahwa MD5 adalah fungsi hash yang sangat lemah, juga tabrakan telah ditemukan (dua nilai teks biasa yang berbeda menghasilkan hash yang sama) Cukup gunakan nilai acak untuk plaintext.
import uuid; uuid.uuid().hex
stackoverflow.com/a/20060712/3218806Jawaban:
Sebuah md5-hash hanyalah sebuah nilai 128-bit, jadi jika Anda menginginkan yang acak:
Saya tidak begitu mengerti maksudnya. Mungkin Anda harus menjelaskan mengapa Anda membutuhkan ini ...
sumber
os.urandom
:''.join('%02x' % ord(x) for x in os.urandom(16))
Saya pikir apa yang Anda cari adalah pengenal unik universal. Lalu modul UUID di python adalah apa yang Anda cari.
UUID4 memberi Anda pengenal unik acak yang memiliki panjang yang sama dengan jumlah md5. Hex akan mewakili adalah sebagai string hex alih-alih mengembalikan objek uuid.
http://docs.python.org/2/library/uuid.html
sumber
Ini berfungsi untuk python 2.x dan 3.x
sumber
The
secrets
Modul ditambahkan dengan Python 3.6+. Ini memberikan nilai acak yang aman secara kriptografis dengan satu panggilan. Fungsi mengambilnbytes
argumen opsional , default adalah 32 (byte * 8 bit = token 256-bit). MD5 memiliki hash 128-bit, jadi berikan 16 untuk token "seperti MD5".sumber
Namun pendekatan lain. Anda tidak perlu memformat int untuk mendapatkannya.
Memberi Anda fleksibilitas pada panjang senar.
sumber
''.join(random.sample(string.ascii_letters + string.digits, 8))
lebih pythonic?Pendekatan lain untuk pertanyaan khusus ini:
Saya tidak mengatakan itu lebih cepat atau lebih disukai daripada jawaban lain; hanya saja itu pendekatan lain :)
sumber
sumber
sumber
Juga harus dicatat bahwa MD5 adalah fungsi hash yang sangat lemah, juga tabrakan telah ditemukan (dua nilai teks biasa yang berbeda menghasilkan hash yang sama) Cukup gunakan nilai acak untuk
plaintext
.sumber