MessageDigest类实现md5加密
项目中用到的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
MessageDigest类实现md5加密的更多相关文章
- Java常用工具类之MD5加密
package com.wazn.learn.util; import java.security.MessageDigest; /** * MD5加密工具类 * <功能详细描述> * * ...
- MessageDigest简介(与MD5加密有关)
参考文章:http://blog.sina.com.cn/s/blog_4f36423201000c1e.html 参考来源:http://blog.csdn.net/hudashi/article/ ...
- MessageDigest类提供MD5或SHA等加密算法
MessageDigest可使用的加密方法有MD2\MD5\SHA-1\SHA-256\SHA-384\SHA-512,使用时候只替换相应参数值即可 MessageDigest md5 = Messa ...
- Android utils 工具类之MD5加密 MD5Utils
实际开发过程中,密码不会保存明文形式,容易被别人窃取. MD5加密是不可逆的加密算法,只能由明文转换成密文. 但是有些人通过将明文对应的密文保存在数据库中,进行查询破解密文.为防止这种解密,根据许多对 ...
- C#帮助类:MD5加密
/// <summary> /// MD5加密 /// </summary> public class Md5 { /// <summary> /// MD5加密 ...
- 使用Java中间MessageDigest该文本MD5加密(Java中间MD5样品加密算法演示)
原文地址:http://www.wenboxz.com 版权声明:本文博客原创文章,博客,未经同意,不得转载.
- java 加密工具类(MD5、RSA、AES等加密方式)
1.加密工具类encryption MD5加密 import org.apache.commons.codec.digest.DigestUtils; /** * MD5加密组件 * * @autho ...
- MessageDigest类
public abstract class MessageDigest extends MessageDigestSpi API中的中英文对照简介(未完) java.security.MessageD ...
- .Net Core Md5加密整理
一..Net Core中Md5使用说明 .Net Core中自带Md5加密处理,使用方法和 .Net Framework中相同 所在命名空间 using System.Security.Cryptog ...
随机推荐
- HDU2486_A simple stone game
这个题目是这样的,一堆石子有n个,首先第一个人开始可以去1-(n-1)个,接下来两人轮流取石子,每个人可取的石子数必须是一个不超过上一次被取的石子的K倍的整数. 现在求对于一堆数量为n的石子是否为必胜 ...
- 洛谷 Roy&October之取石子
题目背景 Roy和October两人在玩一个取石子的游戏. 题目描述 游戏规则是这样的:共有n个石子,两人每次都只能取pk 个(p为质数,k为自然数,且pk小于等于当前剩余石子数),谁取走最后一个石子 ...
- Django安装及简介
一. Django简介 Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架 ...
- day29:关闭服务|
1. 在centos6系统里,我们可以使用ntsysv关闭不需要开机启动的服务,当然也可以使用chkconfig工具来实现. 写一个shell脚本,用chkconfig工具把不常用的服务关闭.脚本需要 ...
- tmp_table_size ---> 优化 MYSQL 经验总结
数据库连接突然增多到1000的问题 查看了一下,未有LOCK操作语句. 但是明显有好多copy to tmp table的SQL语句,这条语读的时间比较长,且这个表会被加读锁,相关表的update语句 ...
- php 阿拉伯数字转中文
function numToWord($num){$chiNum = array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');$chiUni = ...
- error 65: access violation at 0x40021000 : no 'read' permission
http://blog.csdn.net/stephen_yu/article/details/7725247 使用MDK自己创建一个STM32F103VE核的项目 加入源码后编译,正常,在线仿真单步 ...
- centos7安装python-pip(转)
好久没更新博客了............. 来一发................ 在使用centos7的软件包管理程序yum安装python-pip的时候会报一下错误: No package pyt ...
- python并行编程学习之并行计算存储体系结构
基于指令和可被同时处理的存储单元的数目,计算机系统可以分为以下四种类目: 单指令,单数据单元(SISD)在该体系结构中,计算机是单处理器机器,一次只能用单一的指令来操作单一的数据流.在SISD中,机器 ...
- discuz开发,登录次数过多,锁定解决方法
到数据库里的表找到pre_common_failedlogin 和pre_ucenter_failedlogins清空里面的内容即可. truncate table pre_common_failed ...