java md5运算_java实现计算MD5
importjava.io.FileInputStream;importjava.security.DigestInputStream;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;public classMD5Class {//计算字符串的MD5
public staticString conVertTextToMD5(String plainText) {try{
MessageDigest md= MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());byte b[] =md.digest();inti;
StringBuffer buf= new StringBuffer("");for (int offset = 0; offset < b.length; offset++) {
i=b[offset];if (i < 0)
i+= 256;if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}//32位加密
returnbuf.toString();//16位的加密//return buf.toString().substring(8, 24);
} catch(NoSuchAlgorithmException e) {
e.printStackTrace();return null;
}
}
//计算文件的MD5,支持4G一下的文件(文件亲测,大文件未亲测)public staticString conVertFileToMD5(String inputFilePath) {int bufferSize = 256 * 1024;
FileInputStream fileInputStream= null;
DigestInputStream digestInputStream= null;try{//拿到一个MD5转换器(同样,这里可以换成SHA1)
MessageDigest messageDigest= MessageDigest.getInstance("MD5");//使用DigestInputStream
fileInputStream= newFileInputStream(inputFilePath);
digestInputStream= newDigestInputStream(fileInputStream,
messageDigest);//read的过程中进行MD5处理,直到读完文件
byte[] buffer = new byte[bufferSize];while (digestInputStream.read(buffer) > 0)
;//获取最终的MessageDigest
messageDigest=digestInputStream.getMessageDigest();//拿到结果,也是字节数组,包含16个元素
byte[] resultByteArray =messageDigest.digest();//同样,把字节数组转换成字符串
returnbyteArrayToHex(resultByteArray);
}catch(Exception e) {return null;
}finally{try{
digestInputStream.close();
}catch(Exception e) {
}try{
fileInputStream.close();
}catch(Exception e) {
}
}
}private static String byteArrayToHex(byte[] byteArray) {//首先初始化一个字符数组,用来存放每个16进制字符
char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F'};//new一个字符数组,这个就是用来组成结果字符串的(解释一下:一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方))
char[] resultCharArray = new char[byteArray.length * 2];//遍历字节数组,通过位运算(位运算效率高),转换成字符放到字符数组中去
int index = 0;for (byteb : byteArray) {
resultCharArray[index++] = hexDigits[b >>> 4 & 0xf];
resultCharArray[index++] = hexDigits[b & 0xf];
}//字符数组组合成字符串返回
return newString(resultCharArray);
}public static voidmain(String[] args) {//测试
System.out.println(MD5Class.conVertTextToMD5("hello"));
System.out
.println(conVertFileToMD5("C:\\Users\\administrator1\\Downloads\\StarUML-v2.8.0.msi"));
}
}
java md5运算_java实现计算MD5相关推荐
- java 对数运算_java对数计算,java怎样计算对数?
下面给大家分享的是和java计算对数相关的内容,那么具体的应该如何去实现呢? 一.题目 我们以下面的题目为例做解答 古典问题,有一对兔子,从出生之后的第三个月开始,每个月都生一对兔子,小兔子长到了第三 ...
- java md5 密钥_java代码实现MD5加密及验证方法
MD5加密 在我们的程序中,不管是什么,都会有安全问题,今天就说的是MD5加密的方法 MD5是哈希算法,也就是 从明文A到密文B很容易,但是从密文B到明文A几乎不可能 也就是说,给你密文,是几乎无法通 ...
- java比较运算_Java比较运算符
注意哦: 1. > . < . >= . <= 只支持左右两边操作数是数值类型 2. == . != 两边的操作数既可以是数值类型,也可以是引用类型 public clas ...
- java 文件md5校验_Java 获取 文件md5校验码
讯雷下载的核心思想是校验文件的md5值,两个文件若md5相同则为同一文件. 当得到用户下载某个文件的请求后它根据数据库中保留的文件md5比对出拥有此文件的url, 将用户请求挂接到此url上并仿造一个 ...
- java中的md5加密_java中的MD5加密
java中的MD5加密 2016-01-22 09:07:00 admin 原创 1144 摘要:java中的MD5加密 /** * * md5加密 * @author LiuJiawan * @da ...
- java怎么用md5加密数据_JAVA 如何使用 MD5 和SHA1进行数据加密
直接 上代码 package com.ilogie.hbis.digest.util; import java.security.MessageDigest; /** * md5加密工具类 * @au ...
- md5 java 工具类_Java实现一个MD5工具类
I. MD5工具类 利用JDK封装一个简易的MD5工具类,逻辑比较简单,直接贴下具体实现 public static String getMD5(String content) { String re ...
- java long 运算_Java Long类型,阶乘计算
问题描述: n! <= 2^63-1 , 求最大的n. 问题:如果不用java自带的 Long.MAX_VALUE,这个值,如何表示Long类型的最大值,我的表示方法为啥不对? 我的代码如何修改 ...
- java中进行对数运算_java中计算对数
从 Java 1.0 开始,Math 类有了一个自然对数.也就是给定一个参数 x,该自然对数返回 e 的几次幂等于给定的值 x.遗憾的是,Java 语言的(以及 C .Fortran 和 Basic ...
最新文章
- 使用Javascript创建XML文件
- tableau必知必会之学做常用的倾斜图(slopegraph)
- 终于!《iOS 全埋点解决方案》正式出版
- springboot使用j2cache框架和aspectj自定义缓存
- 共享单车,信息安全应未雨绸缪
- AMD、CMD、CommonJs、ES6的对比
- ResultSetMetaData和ResultSet
- php excel sheet,phpexcel来做表格导出(多个工作sheet)
- mysql存储过程中删除定时器_mysql创建存储过程,定时任务,定时删除log 莫大人...
- Linux笔记19.postfix邮件服务器配置安装
- Repeater绑定数组
- 体系结构方案 - 临时性数据计算
- 网络信息安全基本属性
- 省级c语言笔试题,C语言笔试题库.doc
- python两种方法求ROC曲线下面积(AUC)
- npm 安装vue脚手架报错警告npm WARN deprecated
- MAXIMO部分AppBean类操作经验
- 零基础入门学习python笔记-day1:程序开发谋定而后动
- node启动之后内存占用过高解决方案
- 【Verilog学习笔记】D触发器(门级和行为级)+4位寄存器+一个完整的激励程序
热门文章
- NgRx Store里的StoreModule.forRoot()
- SAP Spartacus需要补充url validation单元测试的地方
- 如何查看SAP云平台上某个subaccount的tenant和region信息
- Fiori Elements - get annotation implementation in backend
- 用云闪付乘坐公交地铁,能否享受到优惠,取决于这一点
- 使用SAP CRM中间件XIF(External Interface)一步步创建服务订单
- how is sales pipeline retrieved from backend
- Marketing Cloud的contact merge机制
- Cannot find source code based button in SE24
- fragment in UI5 Smart Template and directive in Angular