java MD5应用
来源:互联网 发布:小蚁科技 知乎 编辑:程序博客网 时间:2024/06/07 04:55
MD5(Message-Digest Algorithm 5(信息-摘要算法 5)),是一种算法,不是加密,用于确保信息传输完整一致。它是一种单向散列算法,不可逆向的。消息摘要可以看作原始数据的指纹,指纹不同则原始数据不同。MD5可以为任何文件产生一个同样独一无二的“数字指纹”,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。
通常步骤
调用MessageDigest对象的update和digest方法
流数据的特殊处理:
使用DigestInputStream或DigestOutputStream包装MessageDigest对象,
调用DigestInputStream的read方法或DigestOutputStream的write方法读写完数据并将流关闭后,
再调用MessageDigest对象的digest方法,流中的数据就全被摘要处理了。
MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。
MessageDigest 对象开始被初始化。该对象通过使用 update 方法处理数据。任何时候都可以调用 reset 方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用 digest 方法之一完成哈希计算。
对于给定数量的更新数据,digest 方法只能被调用一次。在调用 digest 之后,MessageDigest 对象被重新设置成其初始状态。
package com.study.messagedigest;import java.security.MessageDigest;/** * 数字摘要 * * @ClassName: MessageDigestTest * @Description: TODO * @author 我夕 * @date 2012-5-17 */public class MessageDigestTest {/** * @param args * @throws Exception */public static void main(String[] args) throws Exception {// TODO Auto-generated method stubmd5();}/** * * @return * @throws Exception */private static String md5() throws Exception {MessageDigest digest = MessageDigest.getInstance("MD5");digest.update("hello java !".getBytes("UTF-8"));byte[] result = digest.digest();//为了便于调试观察,写个方法将字节数组转换成16进制System.out.println("消息摘要内容:"+toHex(result));System.out.println("消息摘要长度:" + result.length);return null;}// 字节数组转成16进制private static String toHex(byte[] buf) {StringBuffer stringBuffer = new StringBuffer();for (int i = 0; i < buf.length; i++) {int hi = ((buf[i] >> 4) & 0x0f);int lo = buf[i] & 0x0f;stringBuffer.append(hi > 9 ? (char) ((hi - 10) + 'a'): (char) (hi + '0'));stringBuffer.append(lo > 9 ? (char) ((lo - 10) + 'a'): (char) (lo + '0'));}return stringBuffer.toString();}}
经过测试大家会发现,不管要生成的消息摘要的内容怎么改变其长度都是16,都不会改变,也就是说MD5其生成的长度是固定的,额外其生成的消息摘要只要其内容一发生变化其结果必然变了,这也就是md5可以很好的作为判断一个文件是否被他人篡改过。
- JAVA MD5算法应用
- java MD5应用
- MD5在java中的应用
- Java常用加密算法应用MD5,SHA,RSA
- Java常用加密算法应用MD5,SHA,RSA
- MD5应用
- Java中常用的加密算法应用MD5,SHA,RSA
- Java中常用的加密算法应用MD5,SHA,RSA
- Java中常用的加密算法应用MD5,SHA,RSA
- Java中常用的加密算法应用MD5,SHA,RSA
- MD5加密应用之.NET与JAVA差异分析
- MD5.java
- java md5
- Java MD5
- java MD5
- java md5
- java md5
- java MD5
- linux scsi generic howto学习笔记
- start_kernel
- linux socket 编程
- poj 3414( 搜索 )
- C++读取文件
- java MD5应用
- 小议LR中的download filter功能
- 放弃stripes
- s3c6410的UART设备驱动(3)
- linux socket read
- c#通过DataReceived接收串口数据(转换16进制)
- 需要明白服务器购买重点
- 有关生活的碎碎念
- 【Android】下载Android源码的简明步骤