文档章节

MD5加密

Aaron_DMC
 Aaron_DMC
发布于 2016/09/20 14:46
字数 316
阅读 9
收藏 0

java实现MD5加密实例:

import java.io.File;
import java.io.FileInputStream;
import java.math.BigInteger;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * @Author Aaron
 * @CreateTime 2015-6-16下午05:28:11
 * @Version 1.0
 * @Desc 用MD5对数据进行加密
 */
public class MD5 {

	MessageDigest md5;

	static final char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };

	public MD5() {
		try {
			// 获得MD5摘要算法的 MessageDigest 对象
			md5 = MessageDigest.getInstance("MD5");
		} catch (NoSuchAlgorithmException e) {
			System.out.println("创建MD5对象出错");
			throw new IllegalArgumentException("创建md5对象时出错");
		}
	}

	public synchronized String getMD5(String s) {
		return this.getMD5(s.getBytes());
	}

	public synchronized String getMD5(byte[] btInput) {
		try {
			// 使用指定的字节更新摘要
			md5.update(btInput);
			// 获得密文
			byte[] md = md5.digest();
			// 把密文转换成十六进制的字符串形式
			int j = md.length;
			char str[] = new char[j * 2];
			int k = 0;
			for (int i = 0; i < j; i++) {
				byte byte0 = md[i];
				str[k++] = hexDigits[byte0 >>> 4 & 0xf];
				str[k++] = hexDigits[byte0 & 0xf];
			}
			return new String(str);
		} catch (Exception e) {
			System.out.println("生成MD5码时出错");
			throw new IllegalArgumentException("生成MD5出错");
		}
	}

	public String getFileMD5(String filePath) {
		File md5File = new File(filePath);
		return this.getFileMD5(md5File);
	}

	public String getFileMD5(File md5File) {
		String value = "";
		if (!md5File.exists()) {
			System.out.println("计算MD5码时,对应路径文件:{} 不存在.");
			return value;
		}
		try (FileInputStream in = new FileInputStream(md5File)) {
			MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, md5File.length());
			MessageDigest md5 = MessageDigest.getInstance("MD5");
			md5.update(byteBuffer);
			BigInteger bi = new BigInteger(1, md5.digest());
			value = bi.toString(16);
		} catch (Exception e) {
			System.out.println(String.format("计算文件:%s 的MD5码出错!");
		} finally {

		}
		return value;
	}

}

 

© 著作权归作者所有

共有 人打赏支持
上一篇: java解析table
Aaron_DMC
粉丝 8
博文 65
码字总数 73707
作品 0
上海
后端工程师
私信 提问

暂无文章

Linux iptables之mangle表使用案例

mangle表的用途 mangle表的主要功能是根据规则修改数据包的一些标志位,以便其他规则或程序可以利用这种标志对数据包进行过滤或策略路由。 mangel表使用示例 示例1-策略路由1 内网的客户机通...

月下狼
今天
3
0
OSChina 周日乱弹 —— 兼职我想去学学布偶戏

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy : 《火炎 - 女王蜂》 《火炎 - 女王蜂》 手机党少年们想听歌,请使劲儿戳(这里) @小鱼丁 :还在睡觉突然接到一个小哥哥电话“x...

小小编辑
今天
105
7
租房软件隐私保护如同虚设

近日,苏州市民赵先生向江苏新闻广播新闻热线025-84658888反映,他在“安居客”手机应用软件上浏览二手房信息,并且使用该软件自动生成的虚拟号码向当地一家中介公司进行咨询。可电话刚挂不久...

linux-tao
今天
4
0
分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
6
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部