Java语言描述MD5加密工具类实例代码

 更新时间:2017年12月20日 15:48:27   作者:jopen  
这篇文章主要介绍了Java语言描述MD5加密工具类实例代码,具有一定借鉴价值,需要的朋友可以参考下。

编程中经常有用到MD5加密的情况,Java语言并没有像PHP一样提供原生的MD5加密字符串的函数,需要MD5加密的时候,往往需要自己写。

代码如下:

import java.security.MessageDigest;
public class MD5 {
	//公盐
	private static final String PUBLIC_SALT = "demo" ;
	//十六进制下数字到字符的映射数组 
	private final static String[] hexDigits = {"0", "1", "2", "3", "4", 
	  "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
	/**
  * 用户密码加密,盐值为 :私盐+公盐
  * @param password 密码
  * @param salt 私盐
  * @return MD5加密字符串
  */
	public static String encryptPassword(String password,String salt){
		return encodeByMD5(PUBLIC_SALT+password+salt);
	}
	/**
  * md5加密算法
  * @param originString
  * @return 
  */
	private static String encodeByMD5(String originString){
		if (originString != null){
			try{
				//创建具有指定算法名称的信息摘要 
				MessageDigest md = MessageDigest.getInstance("MD5");
				//使用指定的字节数组对摘要进行最后更新,然后完成摘要计算 
				byte[] results = md.digest(originString.getBytes());
				//将得到的字节数组变成字符串返回 
				String resultString = byteArrayToHexString(results);
				return resultString.toUpperCase();
			}
			catch(Exception ex){
				ex.printStackTrace();
			}
		}
		return null;
	}
	/** 
  * 转换字节数组为十六进制字符串 
  * @param  字节数组 
  * @return 十六进制字符串 
  */
	private static String byteArrayToHexString(byte[] b){
		StringBuffer resultSb = new StringBuffer();
		for (int i = 0; i < b.length; i++){
			resultSb.append(byteToHexString(b[i]));
		}
		return resultSb.toString();
	}
	/** 将一个字节转化成十六进制形式的字符串  */
	private static String byteToHexString(byte b){
		int n = b;
		if (n < 0) 
		   n = 256 + n;
		int d1 = n / 16;
		int d2 = n % 16;
		return hexDigits[d1] + hexDigits[d2];
	}
}

总结

以上就是本文关于Java语言描述MD5加密工具类实例代码的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他Java相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • 一步步教你如何使用Java实现WebSocket

    一步步教你如何使用Java实现WebSocket

    websocket协议是基于TCP的一种新的网络协议,它实现了浏览器与服务器的全双工通讯-允许服务器主动发起信息个客户端,websocket是一种持久协议,http是非持久协议,下面这篇文章主要给大家介绍了关于如何使用Java实现WebSocket的相关资料,需要的朋友可以参考下
    2023-05-05
  • Java中的封装、继承和多态,你真的都懂了吗

    Java中的封装、继承和多态,你真的都懂了吗

    Java中的封装、继承和多态知识点是学习java必备的基础知识,看似简单,真正理解起来还是有一定难度的,今天小编再次通过实例代码给大家讲解java 封装继承多态知识,感兴趣的朋友一起学习下吧
    2021-05-05
  • Java简单计算两个日期月数差的方法

    Java简单计算两个日期月数差的方法

    这篇文章主要介绍了Java简单计算两个日期月数差的方法,结合实例形式分析了java使用Calendar类进行日期时间操作相关技巧,需要的朋友可以参考下
    2017-06-06
  • java排序高级之选择排序实现方法

    java排序高级之选择排序实现方法

    这篇文章主要介绍了java排序高级之选择排序实现方法,较为全面的分析了选择排序的原理与具体实现技巧,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • MyBatis-Plus详解(环境搭建、关联操作)

    MyBatis-Plus详解(环境搭建、关联操作)

    MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生,今天通过本文给大家介绍MyBatis-Plus环境搭建及关联操作,需要的朋友参考下吧
    2022-09-09
  • java验证电话号码的方法

    java验证电话号码的方法

    这篇文章主要介绍了java验证电话号码的方法,需要的朋友可以参考下
    2014-02-02
  • SpringMVC中Controller层获取前端请求参数的方式汇总

    SpringMVC中Controller层获取前端请求参数的方式汇总

    这篇文章主要介绍了SpringMVC中Controller层获取前端请求参数的几种方式,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 浅谈Java的LinkedHashSet源码

    浅谈Java的LinkedHashSet源码

    这篇文章主要介绍了浅谈Java的LinkedHashSet源码,底层是链表实现的,是set集合中唯一一个能保证怎么存就怎么取的集合对象
    因为是HashSet的子类,所以也是保证元素唯一的,与HashSet的原理一样,需要的朋友可以参考下
    2023-09-09
  • Websocket如何保证接收消息完整性

    Websocket如何保证接收消息完整性

    用springboot起了个websocket服务端,有时候客户端发来的消息过长,无法接收完整,需要进行额外的处理,这篇文章主要介绍了Websocket如何保证接收消息完整性,需要的朋友可以参考下
    2023-09-09
  • 基于java构造方法Vevtor添加元素源码分析

    基于java构造方法Vevtor添加元素源码分析

    这篇文章主要介绍了基于java构造方法中对Vevtor添加元素的源码分析,有需要的朋友可以借鉴参考下,希望可以对大家有所帮助,祝大家早日升职加薪
    2021-09-09

最新评论