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相关推荐

  1. java 对数运算_java对数计算,java怎样计算对数?

    下面给大家分享的是和java计算对数相关的内容,那么具体的应该如何去实现呢? 一.题目 我们以下面的题目为例做解答 古典问题,有一对兔子,从出生之后的第三个月开始,每个月都生一对兔子,小兔子长到了第三 ...

  2. java md5 密钥_java代码实现MD5加密及验证方法

    MD5加密 在我们的程序中,不管是什么,都会有安全问题,今天就说的是MD5加密的方法 MD5是哈希算法,也就是 从明文A到密文B很容易,但是从密文B到明文A几乎不可能 也就是说,给你密文,是几乎无法通 ...

  3. java比较运算_Java比较运算符

    注意哦: 1.  > . < . >= . <= 只支持左右两边操作数是数值类型 2.  == . != 两边的操作数既可以是数值类型,也可以是引用类型 public clas ...

  4. java 文件md5校验_Java 获取 文件md5校验码

    讯雷下载的核心思想是校验文件的md5值,两个文件若md5相同则为同一文件. 当得到用户下载某个文件的请求后它根据数据库中保留的文件md5比对出拥有此文件的url, 将用户请求挂接到此url上并仿造一个 ...

  5. java中的md5加密_java中的MD5加密

    java中的MD5加密 2016-01-22 09:07:00 admin 原创 1144 摘要:java中的MD5加密 /** * * md5加密 * @author LiuJiawan * @da ...

  6. java怎么用md5加密数据_JAVA 如何使用 MD5 和SHA1进行数据加密

    直接 上代码 package com.ilogie.hbis.digest.util; import java.security.MessageDigest; /** * md5加密工具类 * @au ...

  7. md5 java 工具类_Java实现一个MD5工具类

    I. MD5工具类 利用JDK封装一个简易的MD5工具类,逻辑比较简单,直接贴下具体实现 public static String getMD5(String content) { String re ...

  8. java long 运算_Java Long类型,阶乘计算

    问题描述: n! <= 2^63-1 , 求最大的n. 问题:如果不用java自带的 Long.MAX_VALUE,这个值,如何表示Long类型的最大值,我的表示方法为啥不对? 我的代码如何修改 ...

  9. java中进行对数运算_java中计算对数

    从 Java 1.0 开始,Math 类有了一个自然对数.也就是给定一个参数 x,该自然对数返回 e 的几次幂等于给定的值 x.遗憾的是,Java 语言的(以及 C .Fortran 和 Basic ...

最新文章

  1. 使用Javascript创建XML文件
  2. tableau必知必会之学做常用的倾斜图(slopegraph)
  3. 终于!《iOS 全埋点解决方案》正式出版
  4. springboot使用j2cache框架和aspectj自定义缓存
  5. 共享单车,信息安全应未雨绸缪
  6. AMD、CMD、CommonJs、ES6的对比
  7. ResultSetMetaData和ResultSet
  8. php excel sheet,phpexcel来做表格导出(多个工作sheet)
  9. mysql存储过程中删除定时器_mysql创建存储过程,定时任务,定时删除log 莫大人...
  10. Linux笔记19.postfix邮件服务器配置安装
  11. Repeater绑定数组
  12. 体系结构方案 - 临时性数据计算
  13. 网络信息安全基本属性
  14. 省级c语言笔试题,C语言笔试题库.doc
  15. python两种方法求ROC曲线下面积(AUC)
  16. npm 安装vue脚手架报错警告npm WARN deprecated
  17. MAXIMO部分AppBean类操作经验
  18. 零基础入门学习python笔记-day1:程序开发谋定而后动
  19. node启动之后内存占用过高解决方案
  20. 【Verilog学习笔记】D触发器(门级和行为级)+4位寄存器+一个完整的激励程序

热门文章

  1. NgRx Store里的StoreModule.forRoot()
  2. SAP Spartacus需要补充url validation单元测试的地方
  3. 如何查看SAP云平台上某个subaccount的tenant和region信息
  4. Fiori Elements - get annotation implementation in backend
  5. 用云闪付乘坐公交地铁,能否享受到优惠,取决于这一点
  6. 使用SAP CRM中间件XIF(External Interface)一步步创建服务订单
  7. how is sales pipeline retrieved from backend
  8. Marketing Cloud的contact merge机制
  9. Cannot find source code based button in SE24
  10. fragment in UI5 Smart Template and directive in Angular