OpenLdap的加密md5(Java+Python,同时提供明文-->密文,md5(名文)-->密文两种方法)
# slappasswd -h {md5} -s "secret"
{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==
import base64
import hashlib
import passlib.hash
import binascii # 测试用例
sourceString = ''
#=====================================================================================
# 分解动作版
# 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;
}
OpenLdap的加密md5(Java+Python,同时提供明文-->密文,md5(名文)-->密文两种方法)的更多相关文章
- Java 获取*.properties配置文件中的内容 ,常见的两种方法
import java.io.InputStream; import java.util.Enumeration; import java.util.List; import java.util.Pr ...
- Java代码中获取配置文件(config.properties)中内容的两种方法
方法千千万,本人暂时只总结了两种方法. (1)config.properties中的内容如图 在applicationContext.xml中配置 <!-- 引入配置文件 --> < ...
- Python批量重命名指定目录下文件的两种方法
#法一 import os path = "C://Python34//" for file in os.listdir(path): if os.path.isfile(os.p ...
- DES加密 java与.net可以相互加密解密两种方法
DES加密 java与.net可以相互加密解密两种方法 https://www.cnblogs.com/DrWang/archive/2011/03/30/2000124.html sun.misc. ...
- 转:python list排序的两种方法及实例讲解
对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...
- python list排序的两种方法及实例讲解
对List进行排序,Python提供了两个方法方法1 用List的内建函数list sort进行排序list sort(func=None, key=None, reverse=False)Pytho ...
- Java学习笔记——可视化Swing中JTable控件绑定SQL数据源的两种方法
在 MyEclipse 的可视化 Swing 中,有 JTable 控件. JTable 用来显示和编辑常规二维单元表. 那么,如何将 数据库SQL中的数据绑定至JTable中呢? 在这里,提供两种方 ...
- 在Java Web程序中使用监听器可以通过以下两种方法
之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响 ...
- Java 创建线程的两种方法
Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线 ...
- JAVA高级架构师基础功:Spring中AOP的两种代理方式:动态代理和CGLIB详解
在spring框架中使用了两种代理方式: 1.JDK自带的动态代理. 2.Spring框架自己提供的CGLIB的方式. 这两种也是Spring框架核心AOP的基础. 在详细讲解上述提到的动态代理和CG ...
随机推荐
- windows递归复制指定时间后修改过的文件
因为在拷贝web站点时,也会存在更新,需要定期覆盖新的内容,就是上次覆盖的时间和到这次时间内修改过的文件都复制. 实现命令xcopy xcopy src dest D:\WWW\phpMyAdmin\ ...
- POJ - 1019 Number Sequence (思维)
https://vjudge.net/problem/POJ-1019 题意 给一串1 12 123 1234 12345 123456 1234567 12345678 123456789 1234 ...
- 八皇后问题动态演示_Qt5实现
//核心代码如下 //Queen--放置皇后 #include "queue.h" queue::queue() { *; ; this->board = new bool[ ...
- STM32固件库下载地址
http://www.stmcu.org/document/list/index/sort-hot/category-517找标准外设库命名的资源
- eclipse2019-03设置代码编辑区背景为图片
一.我的主题设置如下所示 二.找到如下所示或类似的文件夹 三.在该文件夹里的images文件夹里添加图片 四.在CSS目录下的e4-dark_win.css文件中添加如下代码 .MPart Style ...
- javaScript事件系统详解
一个有情怀的猴子
- 后台拿webshell方法(2)
在这里总结一下后台拿webshell的方法: 备份突破(在博客上有随笔介绍) 一般在后台上传文件类型受到限制,可以利用数据库备份将其上传的格式改为后门执行格式即可: asp更改为jpg jpg ...
- JS——取消事件冒泡,实现div的显示与隐藏 event.cancelBubble = true;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- MySQL - 日常操作一 增删改查
mysql 源码安装 创建 mysql 账户 组 groupadd mysql useradd mysql -g mysql -M -s /bin/false 解压缩源码安装 .tar.gz cd ...
- python基础知识~logger模块
一 配置文件模块 import logging ->导入模块 logger = logging.getLogger('mylogger') ->初始化类二 创建句柄 1 文件句柄 fh = ...