Java中的MD5算法
来源:互联网 发布:linux下如何同步时钟 编辑:程序博客网 时间:2024/06/05 17:06
一、MD5是什么
Message-Digest Algorithm 5(信息-摘要算法)。经常说的“MD5加密”,就是它→信息-摘要算法。
在下载一下东西时,经常在一些压缩包属性里,看到md5值。而且这个下载页面,很可能会在某一个地方,写了一句,此文件的MD5值为XXXXXXXXX。这有什么作用呢?
白话白话:md5,其实就是一中算法。可以将一个字符串,或文件,或压缩包,执行md5后,就可以生成一个固定长度为128bit的串。这个串,基本上是唯一的。
所以,有人修过压缩包后,就会生成新的串,这时就可以拿网站提供的串和新生成的串对比,如果不同,那就是被人修过过了。
这里大牛的博客介绍的很清楚。
二、下面是实现代码
import java.security.MessageDigest;public class MD5Test { //main测试类 public static void main(String[] args) { String result = getMD5("123456789"); System.err.println(result); } /** * 生成md5 * @param message * @return */ public static String getMD5(String message) { String md5str = ""; try { //1 创建一个提供信息摘要算法的对象,初始化为md5算法对象 MessageDigest md = MessageDigest.getInstance("MD5"); //2 将消息变成byte数组 byte[] input = message.getBytes(); //3 计算后获得字节数组,这就是那128位了 byte[] buff = md.digest(input); //4 把数组每一字节(一个字节占八位)换成16进制连成md5字符串 md5str = bytesToHex(buff); } catch (Exception e) { e.printStackTrace(); } return md5str; } /** * 二进制转十六进制 * 因为一个byte对应8位二进制,取值范围是-128~127 * 所以一个byte对应两个十六进制数字 * * @param bytes * @return */ public static String bytesToHex(byte[] bytes) { StringBuffer md5str = new StringBuffer(); //把数组每一字节换成16进制连成md5字符串 int digital; for (int i = 0; i < bytes.length; i++) { digital = bytes[i]; if(digital < 0) { digital += 256; } if(digital < 16){ md5str.append("0"); } md5str.append(Integer.toHexString(digital)); } return md5str.toString().toUpperCase(); }}
另外,一个byte占8个二进制位,取值范围是 -128~127
0 0
- Java中的MD5算法
- Java里MD5算法
- JAVA MD5 算法实现
- java实现MD5算法
- java实现MD5算法
- Java实现MD5算法
- Java MD5算法
- JAVA MD5算法应用
- Java MD5算法
- Java生成MD5算法
- Java MD5算法
- java-MD5解密算法
- MD5算法java实现
- Java生成MD5算法
- MD5算法 java 实现
- MD5算法(Java)
- JAVA md5算法代码
- JAVA实现MD5算法
- 搭建vsftpd(本地用户和虚拟用户可以同时存在)
- poj 2689 Prime Distance
- 理解OAuth 2.0
- iOS操作系统整体架构层次
- hdu 5198 简单题
- Java中的MD5算法
- PHP快速排序法(数组排序)与简单选择排序
- linux网络服务练习题及答案
- c ++ 线程暂停
- Ubuntu下的实用软件及技巧
- 安装完 MySQL 后必须调整的 10 项配置
- mariadb简介
- 网页内容居中
- Hadoop科普文——常见的45个问题解答