簡體   English   中英

Python:從預先存在的 md5 校驗和生成 ldap 密碼

[英]Python: make a ldap password from a preexisting md5 checksum

我有一個存儲為 md5 校驗和的密碼數據庫,我想用它填充一個 ldap 目錄。

我知道如何從純文本密碼創建 ldap 密碼,但還沒有找到從 md5 密碼 hash 執行此操作的方法。

import base64
import hashlib
from passlib.hash import ldap_md5

password = 'strongpassword'
md5sum = 'f93fc10472a31bb3061aa0b45e228c5a'

ldap1 = ldap_md5.hash(password) # correct

md5 = hashlib.md5(password.encode())
ldap2 = '{MD5}' + base64.b64encode(md5.digest()).decode() # correct

ldap3 = '{MD5}' + base64.b64encode(md5sum.encode()).decode() # incorrect

print(ldap1) # {MD5}+T/BBHKjG7MGGqC0XiKMWg==
print(ldap2) # {MD5}+T/BBHKjG7MGGqC0XiKMWg==
print(ldap3) # {MD5}ZjkzZmMxMDQ3MmEzMWJiMzA2MWFhMGI0NWUyMjhjNWE=
print()
print('I need to transform those bytes:')
print(md5sum.encode()) # b'f93fc10472a31bb3061aa0b45e228c5a'
print()
print('into whatever this is:')
print(md5.digest())    # b'\xf9?\xc1\x04r\xa3\x1b\xb3\x06\x1a\xa0\xb4^"\x8cZ'

我只需要 function bytearray.fromhex() 或 bytes.fromhex()。

import base64
import hashlib
from passlib.hash import ldap_md5

password = 'strongpassword'
md5sum = 'f93fc10472a31bb3061aa0b45e228c5a'

ldap1 = ldap_md5.hash(password) # correct

md5 = hashlib.md5(password.encode())
ldap2 = '{MD5}' + base64.b64encode(md5.digest()).decode() # correct

ldap3 = '{MD5}' + base64.b64encode(bytearray.fromhex(md5sum)).decode() # correct

ldap4 = '{MD5}' + base64.b64encode(bytes.fromhex(md5sum)).decode() # correct

print(ldap1) #{MD5}+T/BBHKjG7MGGqC0XiKMWg==
print(ldap2) #{MD5}+T/BBHKjG7MGGqC0XiKMWg==
print(ldap3) #{MD5}+T/BBHKjG7MGGqC0XiKMWg==
print(ldap4) #{MD5}+T/BBHKjG7MGGqC0XiKMWg==

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM