java消息摘要

来源:互联网 发布:简述什么是数据库系统 编辑:程序博客网 时间:2024/05/21 19:40
消息摘要。这是一种与消息认证码结合使用以确保消息完整性的技术。主要使用单向散列函数算法,可用于检验消息的完整性,和通过散列密码直接以文本形式保存等, 目前广泛使用的算法有MD4、MD5、SHA-1,jdk1.5对上面都提供了支持,在java中进行消息摘要很简单, java.security.MessageDigest提供了一个简易的操作方法。


 消息摘要只能检查消息的完整性,但是单向的,对明文消息并不能加密。

/** *  */package security;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.StringBufferInputStream;import java.math.BigInteger;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/** * DESC: * 消息摘要。这是一种与消息认证码结合使用以确保消息完整性的技术。主要使用单向散列函数算法, * 可用于检验消息的完整性,和通过散列密码直接以文本形式保存等, * 目前广泛使用的算法有MD4、MD5、SHA-1,jdk1.5对上面都提供了支持,在java中进行消息摘要很简单, * java.security.MessageDigest提供了一个简易的操作方法。 * 消息摘要只能检查消息的完整性,但是单向的,对明文消息并不能加密 *  * @Copyright YangFei *            </p> * @author yfei Date:2013-8-28 */public class MessageDigestUtil {static final int BUFFERSIZE = 2048;public static MessageDigest md ;static {try {md = MessageDigest.getInstance("MD5"); // MD5,SHA-1} catch (NoSuchAlgorithmException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * digest * @param input * @return * @throws IOException *  */public static  String digest(InputStream input) throws IOException{byte[] buffer = new byte[BUFFERSIZE];int i;while((i=input.read(buffer))!=-1){md.update(buffer,0,i);}BigInteger bigInteger = new BigInteger(1, md.digest());return bigInteger.toString(16);}public static void main(String args[]) {InputStream input = null ;try {input = new FileInputStream(new File("testData/test.docx"));//input = new StringBufferInputStream("sdf1");System.out.println(digest(input));} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {input.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}


原创粉丝点击