python 用md5生成16位长度字符串,求解
阿神
阿神 2017-04-18 09:40:58
0
3
1795

python 用md5生成16位长度字符串,求解

阿神
阿神

闭关修行中......

membalas semua(3)
迷茫

Dua kaedah:

1. Rawak (setepatnya, ini hanyalah fungsi yang menjana campuran huruf dan nombor tanpa sebarang panjang)

import random
import string

def id_generator(size=16, chars=string.ascii_letters + string.digits):
    return ''.join(random.choice(chars) for _ in range(size))

print(id_generator())
# 结果 nrICjdPKnxZdp4tI (每次都不同)

2. md5 (ini sepatutnya hasil yang anda mahukan)

# Python 2.x
import hashlib
print hashlib.md5("fuck gfw").hexdigest()[8:-8]

# Python 3.x
import hashlib
print(hashlib.md5("fuck gfw".encode('utf-8')).hexdigest())[8:-8]

Lampiran: Perbezaan antara penyulitan MD5 16-bit dan penyulitan MD5 32-bit

Penyulitan MD5 biasanya pengekodan 32-bit Malah, kadangkala ia hanya memerlukan 16 bit, jadi seperti yang anda lihat, satu langkah lagi diperlukan untuk mengambil bahagian tengah 16 bit yang terbaik

洪涛
import hashlib

data =  'This a md5 test!'
hash_md5 = hashlib.md5(data)

hash_md5.hexdigest() # 按16位输出

Hasil keluaran 'fdedaafb043d41ff06b6ef249ef53be9'

Ty80

Cara paling mudah ialah:

>>> import hashlib
>>> hashlib.md5("test").digest()
"\t\x8fk\xcdF!\xd3s\xca\xdeN\x83&'\xb4\xf6"

Dengan cara ini, 128 bit (16 bit) MD5 diperolehi. Tetapi ia tidak intuitif saya biasanya menggunakan format perenambelasan:

>>> hashlib.md5("test").hexdigest()
'098f6bcd4621d373cade4e832627b4f6'
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan