cari

Rumah  >  Soal Jawab  >  teks badan

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

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

阿神阿神2802 hari yang lalu1798

membalas semua(3)saya akan balas

  • 迷茫

    迷茫2017-04-18 09:42:58

    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

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 09:42:58

    import hashlib
    
    data =  'This a md5 test!'
    hash_md5 = hashlib.md5(data)
    
    hash_md5.hexdigest() # 按16位输出
    

    Hasil keluaran 'fdedaafb043d41ff06b6ef249ef53be9'

    balas
    0
  • PHP中文网

    PHP中文网2017-04-18 09:42:58

    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'

    balas
    0
  • Batalbalas