zoukankan      html  css  js  c++  java
  • OpenLdap的加密md5(Java+Python,同时提供明文-->密文,md5(名文)-->密文两种方法)

    # slappasswd -h {md5} -s "secret"
    {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==

    import base64
    import hashlib
    import passlib.hash
    import binascii
    
    # 测试用例
    sourceString = '123456'
    #=====================================================================================
    # 分解动作版
    # md5加密串
    md5String=hashlib.md5(sourceString.encode('utf-8')).hexdigest()
    # ascii码加密串
    binasciiString = binascii.a2b_hex(md5String)
    # base64加密串
    base64String = base64.b64encode(binasciiString).decode('utf=8')
    # 测试用例
    print("{MD5}" + base64String)
    # ====================================================================================
    # 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(sourceString))
    # ====================================================================================

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

     Java之分版本:

    //算法:将密码经过 MD5 运算,得到 32 字节的字符串,然后每2个字节压缩成一个十六进制字符,这样得到16字节的字符串,最后经过Base64编码。
            public static String getLdapPassword(String md5pass)
            {
                BASE64Encoder base64en = new BASE64Encoder();        
                byte[] baKeyword = new byte[md5pass.length() / 2];
                for (int i = 0; i < baKeyword.length; i++) {
                    try {
                        baKeyword[i] = (byte) (0xff & Integer.parseInt(md5pass.substring(i * 2, i * 2 + 2), 16));
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
                String newstr = base64en.encode(baKeyword);        
                return newstr;
            }
  • 相关阅读:
    jquery笔记
    mysql优化三
    MYSQL优化
    mysql大表优化
    mybatis缓存机制
    mybatis主键返回语句 使用方法,就是实体类.getid即可拿到返回的id
    mybatis组合实体查询
    HTTP Status 500
    Perfmon——为什么“% Disk Time”计数器的值会大于100%?
    Lint——Android SDK提供的静态代码扫描工具
  • 原文地址:https://www.cnblogs.com/littlehb/p/9379851.html
Copyright © 2011-2022 走看看