项目中用到的md5工具类:

 package com.mall.util;

 import org.springframework.util.StringUtils;

 import java.security.MessageDigest;

 /**
* Created by geely
*/
public class MD5Util { /**
* 将字节数组转为十六进制数
* @param b
* @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();
} /**
* 将某一个字节转为十六进制数
* @param b
* @return
*/
private static String byteToHexString(byte b) {
int n = b;
if (n < 0)
n += 256;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
} /**
* 返回大写MD5
*
* @param origin 要加密的原字符串
* @param charsetname 加密算法使用的字符集
* @return
*/
private static String MD5Encode(String origin, String charsetname) {
String resultString = null;
try {
resultString = new String(origin);
//初始化md5算法
MessageDigest md = MessageDigest.getInstance("MD5");
//md.digest(resultString.getBytes())获取数据的信息摘要,返回字节数组
//byteArrayToHexString()将字节数组转为十六进制数
if (charsetname == null || "".equals(charsetname)) {
//如果不传入字符集,则调用默认字符集
resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
}
else {
resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));
}
} catch (Exception exception) {
}
return resultString.toUpperCase();
} /**
* 唯一public方法对外公开
* @param origin
* @return
*/
public static String MD5EncodeUtf8(String origin) {
//对原字符串加盐值返回
origin = origin + PropertiesUtil.getProperty("password.salt", "");
//传入utf-8字符集
return MD5Encode(origin, "utf-8");
} //十六进制数组值
private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; }

调用:

(MD5Util.MD5EncodeUtf8(passwordNew)

1、消息摘要的简介

1.1消息摘要的概念

唯一对应一个消息或文本的固定长度的值,由一个单向Hash加密函数对消息进行作用而产生。

1.2 消息摘要的分类

(1) MD (Message Digest)  消息摘要算法

(2) SHA(Secure Hash Algorithm) 安全散列算法

(3) MAC(Message Authentication Code) 消息认证码算法

2、MD算法系列

2.1  MD算法的基本概念

为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。

2.2   MD算法的种类

MD算法系列(JDK)

2.3  MD 算法编程使用

MD5算法,可以用来保存用户的密码信息。为了更好的保存,可以在保存的过程中,加入盐。/在保存用户密码的时候,盐可以利用生成的随机数。可以将密码结合MD5加盐,生成的数据摘要和盐保存起来 。以便于下次用户验证使用。在用户表里面,也保存salt。

MD5和SHA比较:http://blog.csdn.net/xiaokui_wingfly/article/details/38045871?utm_source=tuicool&utm_medium=referral

最新文章

  1. swift_枚举 | 可为空类型 | 枚举关联值 | 枚举递归 | 树的概念
  2. uC/OS-II应用程序代码
  3. Delphi XE5 android 获取网络状态
  4. svn学习笔记(3)设置
  5. CentOS 7系统挂载NTFS分区的移动硬盘(转载及体验 CentOS6.5系统挂载NTFS分区的移动硬盘)
  6. [原创]gerrit上分支操作记录(创建分支、删除分支)
  7. Android 判断现在系统存储器是“手机存储”还是“SD存储”
  8. 扫描二维码下载安装apk的app
  9. IIS 允许无后缀文件访问的配置
  10. 嵌入式中 MMU的功能
  11. Nginx配置中运行与启动的详细介绍【转】
  12. BZOJ1901 - Dynamic Rankings(树状数组套主席树)
  13. Linux&amp;shell 之Shell命令进阶
  14. verilog中always块延时总结
  15. 纯洁CSS实现下拉菜单和下拉容器(纯洁CSS导航栏和导航下拉容器)
  16. curl通过调用WebService查询当前天气
  17. Gradient Boost 算法流程分析
  18. redis-cluster集群搭建
  19. Dapper Helper
  20. sqlbulkcopy 多表批量保存

热门文章

  1. 只要实现了annotation这个接口就是注解 同理:只要实现了某个接口就是该类型的实现类
  2. java 集合 父类的使用子类的方法时候 底层自动转型为子类的数据类型
  3. &quot;流量监管&quot;和&quot;流量整形&quot;的区别
  4. [poi2011]bzoj 2277 —— strongbox&#183;[洛谷3518]
  5. Eve-NG-Toolkit
  6. Tajo--一个分布式数据仓库系统(分布式环境安装试用)
  7. 【转】大数据分析(Big Data OLAP)引擎Dremel, Tenzing 以及Impala
  8. 【LOJ6436】【PKUSC2018】神仙的游戏(NTT)
  9. Kerberos的黄金票据详解
  10. 洛谷 P1023 税收与补贴问题 (2000NOIP提高组)