(1)需要导入的包

    <dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>

(2)MD5Util类

import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang3.StringUtils; import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap; public class MD5Util { /**
* 字符串签名
* @param text 需要签名的字符串
* @param key 密钥
* @param charset 编码格式
* @return 签名结果
*/
public static String sign(String text, String key, String charset) {
//拼接key
text = text + key;
return DigestUtils.md5Hex(getContentBytes(text, charset));
} /**
* 根据参数map签名
* @param map 有序map
* @param key
* @param charset
* @return
*/
public static String sign(TreeMap<String, Object> map, String key, String charset){
Set<String> keySet = map.keySet();
StringBuilder sb = new StringBuilder();
for (String mapKey : keySet){
String value = (String)map.get(key);
sb.append(key).append("=").append(value).append("&");
}
return sign(sb.toString(), key, charset);
} /**
* 根据参数map签名
* @param map hashMap
* @param key
* @param charset
* @return
*/
public static String sign1(Map<String, Object> map, String key, String charset){
Set<String> keySet = map.keySet();
StringBuilder sb = new StringBuilder();
for (String mapKey : keySet){
String value = (String)map.get(key);
sb.append(key).append("=").append(value).append("&");
}
return sign(sb.toString(), key, charset);
} /**
* 根据参数map签名
* @param map hashMap
* @param key
* @param charset
* @return
*/
public static String sign(Map<String, String> map, String key, String charset){
Set<String> keySet = map.keySet();
StringBuilder sb = new StringBuilder();
for (String mapKey : keySet){
String value = (String)map.get(key);
sb.append(key).append("=").append(value).append("&");
}
return sign(sb.toString(), key, charset);
} /**
* 根据字符串获取byte[]
* @param content
* @param charset
* @return
*/
private static byte[] getContentBytes(String content, String charset){
if (StringUtils.isEmpty(charset)) {
return content.getBytes();
}
try {
return content.getBytes(charset);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("转码过程中出现错误,指定的编码集不对,您目前指定的编码集是:" + charset);
}
} /**
* 签名,不用加密码
* @param origin
* @param charsetname
* @return
*/
public static String MD5Encode(String origin, String charsetname) {
String resultString = null;
try {
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
if (charsetname == null || "".equals(charsetname))
resultString = byteArrayToHexString(md.digest(resultString
.getBytes()));
else
resultString = byteArrayToHexString(md.digest(resultString
.getBytes(charsetname)));
} catch (Exception exception) {
}
return resultString;
}
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;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; }

(3)使用举例

//加密

//要加密的数据map<String, String>
Map<String, String> data = new TreeMap<String, String>();
String key="key123";//加密key
String sign = MD5Util.sign(data, key, "utf-8"); //要加密的数据map<String, Object>
Map<String, Object> result = new TreeMap<String, Object>();
String key="key123";//加密key
String sign = MD5Util.sign1(data, key, "utf-8"); //不用密码的加密,加密一个String
String sign=MD5Util.MD5Encode(mchkey, "utf-8");

MD5加密Util的更多相关文章

  1. java中使用MD5加密技术

    在项目中经常会对一些信息进行加密,现在常用的信息加密技术有:MD5.RSA.DES等,今天主要说一下,md5加密,以及如何在java代码根据自己的业务需求使用md5. MD5简介: MD5即Messa ...

  2. android md5加密与rsa加解密实现代码

    import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security. ...

  3. Shiro-密码的MD5加密

    1.密码的加密 在数据表中存的密码不应该是123456,而应该是123456加密之后的字符串,而且还要求这个加密算法是不可逆的,即由加密后的字符串不能反推回来原来的密码,如果能反推回来那这个加密是没有 ...

  4. Android DES AES MD5加密

    AES加密: <span style="font-size:18px;">package com.example.encrypdate.util; import jav ...

  5. JMeter-Eclipse添加自定义函数 MD5加密 32位和16位

    最近公司的接口都是MD5  16位加密,所以要使用加密功能. 之前也做过加密,因为用的比较少,所以是写了一个加密方法,导出JAR包,调用的.用起来需要很多设置,并且换算效率也不高.听前同事说,jmet ...

  6. jmeter-Java关于MD5加密方法 以及16位32位互转

    MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现.将 ...

  7. SpringSecurity 登录 - 以及Md5加密

    我们现在开放一个链接给其他系统,来访问我们的系统 http://localhost:8080/hulk-teller-web/haihui!init.jspa?loginId=teller01& ...

  8. md5加密用户登陆遇到的问题及解决办法

    有个项目的登陆模块使用到了cas,应需求要求,用户名和密码传输时使用了md5加密模式,加密的密码可以直接保存在数据库,但是加密的用户名则必须解密出来才行,于是后台的java代码中便写了针对用户名的解密 ...

  9. Java MD5加密与RSA加密

    区别: MD5加密: 加密时通过原字符串加密成另一串字符串 解密时需要原加密字符串进行重新加密比较两次加密结果是否一致 T=RSA加密: 加密时通过原字符串生成密钥对(公钥+私钥) 解密时通过公钥和私 ...

随机推荐

  1. Unix 和· Linux 系统概述

    一.Unix 1.Unix 定义 Unix 是一个计算机操作系统,一个用来协调.管理和控制计算机硬件和软件资源的控制程序 '2.Unix 特点 ① 多用户:在同一时刻可以有多个用户同时使用Unix操作 ...

  2. Map集合学习总结

    1.Map接口定义的集合又称查找表,用于存储所谓的 key-value  映射对,key可以看成是value的索引,作为key的对象在集合中不可以重复 根据内部数据结构的不同Map接口有多重实现类,其 ...

  3. PAT1039: Course List for Student

    1039. Course List for Student (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...

  4. Java NIO核心组件简介

    原文链接:http://tutorials.jenkov.com/java-nio/overview.html NIO包含下面几个核心的组件: Channels Buffer Selector 整个N ...

  5. sql server 高可用故障转移(完结)

    安装完二个sql server 节点后,对外的虚拟ip是192.168.2.105 测试将sql server转到另一节点 转移后连接sql 虚拟ip 测试 通过windows日志查看远行状态 总结 ...

  6. 你不知道的JavaScript--Item15 prototype原型和原型链详解

    用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...

  7. 用git工作的流程

    1.       clone仓库: git clone git@github.com:test/test.git 2.       检出远程的develop分支 git checkout -b dev ...

  8. git fatal: 远程 origin 已经存在。

    不小心将git远程地址配错了,再次配置提示以下错误: fatal: 远程 origin 已经存在. 此时只需要将远程配置删除,重新添加即可: git remote rm origin git remo ...

  9. Quartz简单案例

    需求需要开发一个每天定时推送消息给微信用户,第一次接触quartz,简单案例 1. 先编辑要执行的任务 测试类代码 package com.wqq.test.quartz; import org.sp ...

  10. BZOJ_1058_[ZJOI2007]报表统计_STL

    BZOJ_1058_[ZJOI2007]报表统计_STL Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工 作,作为她的生日礼 ...