47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
import hashlib
|
|
import base64
|
|
import logging
|
|
|
|
# 配置日志
|
|
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def md5_encrypt(text):
|
|
# 创建一个md5哈希对象
|
|
md5_hash = hashlib.md5()
|
|
# 更新哈希对象的数据,注意这里需要将字符串转换为字节类型
|
|
md5_hash.update(text.encode('utf-8'))
|
|
# 获取十六进制表示的哈希值
|
|
encrypted_text = md5_hash.hexdigest()
|
|
|
|
return encrypted_text
|
|
|
|
|
|
def get_ldap_password(password):
|
|
try:
|
|
# 计算MD5哈希值
|
|
md5pass = md5_encrypt(password)
|
|
|
|
# 每两个字节压缩成一个十六进制字符
|
|
ba_keyword = bytearray()
|
|
for i in range(0, len(md5pass), 2):
|
|
try:
|
|
ba_keyword.append(int(md5pass[i:i + 2], 16) & 0xff)
|
|
except Exception as e:
|
|
logger.error(f"======================错误密码:{md5pass}")
|
|
logger.error(e, exc_info=True)
|
|
return None
|
|
|
|
# Base64编码
|
|
newstr = base64.b64encode(ba_keyword).decode('utf-8')
|
|
return newstr
|
|
|
|
except Exception as err:
|
|
logger.error(f"出错的密码:{password}")
|
|
logger.error(err, exc_info=True)
|
|
return None
|
|
|
|
|
|
if __name__ == '__main__':
|
|
print(get_ldap_password("123456")) |