package com.horizon.util;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* 将字符串进行md5加密
* @author LIMENGCHENG292
*
*/
public class MD5 {
/**
*
* @param str 需要被加密的String
* @return 加密之后的String (32个16进制数 128位)
* 例如:A1234567890B1234567890C123456789
* @throws NoSuchAlgorithmException
*/
private static final String DEFAULTMD5String = "00000000000000000000000000000000";
public static String MD5Encoder(String str)
throws NoSuchAlgorithmException {
MessageDigest md5 = MessageDigest.getInstance("MD5");
if (str == null) {
// 如果需要加密的String是null,返回默认的DEFAULTMD5String
return DEFAULTMD5String;
}
md5.update(str.getBytes());
byte[] b = md5.digest();
int i = 0;
StringBuffer buf = new StringBuffer("");
for (int offset=0; offset<b.length; offset++) {
i = b[offset];
if (i<0) {
i = i + 256;
}
if (i<16) {
buf.append("0");
}
buf.append(Integer.toHexString(i));
}
return buf.toString();
}
public static String MD5Encoder(Object obj)
throws NoSuchAlgorithmException, IOException {
MessageDigest md5 = MessageDigest.getInstance("MD5");
if (obj == null) {
// 如果需要加密的Object是null,返回默认的DEFAULTMD5String
return DEFAULTMD5String;
}
md5.update(DataUtil.objToBytes(obj));
byte[] b = md5.digest();
int i = 0;
StringBuffer buf = new StringBuffer("");
for (int offset=0; offset<b.length; offset++) {
i = b[offset];
if (i<0) {
i = i + 256;
}
if (i<16) {
buf.append("0");
}
buf.append(Integer.toHexString(i));
}
return buf.toString();
}
}
第二个方法中的参数obj,必须是可序列化的,否则会throw一个NotSerializableException
上类中用到的DataUtil类,代码如下
package com.horizon.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class DataUtil {
public static byte[] objToBytes(Object obj) throws IOException {
if (obj == null) {
return null;
}
ByteArrayOutputStream bo = null;
ObjectOutputStream oo = null;
try {
bo = new ByteArrayOutputStream();
oo = new ObjectOutputStream(bo);
oo.writeObject(obj);
oo.flush();
oo.close();
return bo.toByteArray();
} catch (IOException e) {
throw e;
} finally {
if (bo != null) {
bo.close();
bo = null;
}
}
}
}
分享到:
相关推荐
MD5加密MD5加密MD5加密MD5加密MD5加密
Kettle中使用JavaScript调用jar包对文件内容进行MD5加密.本文主要知识点: JavaScript调用jar包对文件内容进行MD5加密,返回加密md5值 Kettle实现对文件内容的加密,返回加密md5值 2.使用方法 1)下载jar包 ...
pb9.0调用md5加密
MD5加密MD5加密MD5加密MD5加密MD5加密MD5加密MD5加密MD5加密MD5加密MD5加密
两种MD5加密jar包,两种MD5加密jar包,两种MD5加密jar包,两种MD5加密jar包,两种MD5加密jar包,两种MD5加密jar包,两种MD5加密jar包,
md5加密md5加密md5加密md5加密md5加密md5加密
在WPS内通过JS宏实现MD5加密
搞小程序开发,请求接口的加密部分用到md5,百度一大堆垃圾的js md5加密,每一个都正确,都是不支持中文的,爬墙才找到这个,希望大家别入坑...js md5加密,md5支持utf-8加密,javascript md5加密,最好用js md5加密。
MD5编码、MD5加密解密demo代码,详看博客 对字符串进行MD5编码及MD5加密和解密
Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。 Java实现MD5加密以及解密,附带测试类,具体见代码。
批量MD5加密工具,很不错。
VBA MD5加密 算法
C++实现 MD5加密算法 可直接调用 hash1加密算法 MD5加密算法 MD5加密算法
MD5加密单独封装一个类,可以生成16位大写(默认)或小写的(需修改源码)的密钥串。与在线MD5加密结果一致。VS2005工程。
md5加密算法 C语言(经过测试验证完整版) 经过调试验证,与工具结果一致 MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash...
md5加密算法源码: 一 \md5加密是对字符或密码进行的16位或32位等加密方式! 一般在普通MDB数据库经常用到,比如论坛数据库等.有用! 二 \加密解密并不矛盾,比如银行系统的128位加密现在谁可以轻易破的了呢? 虽然md5...
MD5加密器,用vb编写的,已生产了exe文件。 包括16位加密和32位加密两种加密方式
密码学md5加密技术..........................................................................................................................................................................................
VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密VB的md5加密
C# MD5加密 实例源码(加密解密)