# slappasswd -h {md5} -s "secret"
{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==
# pip install passlib -i "https://pypi.doubanio.com/simple/" import base64 import hashlib import passlib.hash # 测试用例 str1 = 'secret' # 算法:将密码经过 MD5 运算,得到 32 字节的字符串,然后每2个字节压缩成一个十六进制字符,这样得到16字节的字符串,最后经过Base64编码。 # ==================================================================================== # ldap两步到位版本 # 1、转md5后的字符串 def stringMd5(str1): return hashlib.md5(str1.encode("utf-8")) # 2、ldap的独特md5后的base64加码,传入一个md5值,返回一个加密后的base64值 def ldapPassword(md5Str): a=md5Str.digest() b = base64.b64encode(a).decode('utf=8') return b # 测试用例 print("{MD5}"+ldapPassword(stringMd5(str1))) # ==================================================================================== # ldap一步到位版本 def hash_md5(data): md = hashlib.md5() md.update(str(data)) a = md.digest() b = base64.b64encode(a) return b print(passlib.hash.ldap_md5.encrypt(str1)) # ====================================================================================
Java之一步到位版本:
import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import sun.misc.BASE64Encoder; public class SimpleMD5Example { public static String EncoderByMd5(String str) throws NoSuchAlgorithmException, UnsupportedEncodingException{ MessageDigest md5=MessageDigest.getInstance("MD5"); BASE64Encoder base64en = new BASE64Encoder(); String newstr=base64en.encode(md5.digest(str.getBytes("utf-8"))); return newstr; } public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException { /* slappasswd -h {md5} -s "secret" {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ== */ String passwordToHash = "secret"; String N_md5=EncoderByMd5(passwordToHash); System.out.println(N_md5); /* slappasswd -h {md5} -s "dsideal4r5t6y7u" {MD5}yDL5JsEkVI9aVYfIW1pbPw== */ passwordToHash = "dsideal4r5t6y7u"; N_md5=EncoderByMd5(passwordToHash); System.out.println(N_md5); } }