OpenLdap的加密md5

# 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);
    }
}

猜你喜欢

转载自www.cnblogs.com/littlehb/p/9379851.html
今日推荐