Java实现MD5加密(一)

来源:互联网 发布:成都软件专修学院 编辑:程序博客网 时间:2024/06/07 00:13

MD5简介:

MD5的全称:Message-Digest Algorithm 5(信息-摘要算法5)

MD5的加密方式是一种哈希加密。一些主流的编程语言都已经实现了MD5的加密,所以如果你的程序或是系统涉及到在多种语言之间的校验,那么MD5可以是备选之一。不过因为MD5是采用哈希函数来进行的加密,所以它无关密钥,也就是说在确定了明文的情况下,MD5就可以加密。不过MD5是不可逆的,只能加密,不能解密。


MD5加密字符串:

Java实现MD5加密和文件校验-含加密字符串以及文件的源码

加密字符串

import java.io.UnsupportedEncodingException;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

public class OutterMD5 {

/**

*MD5 加密

*

* @param data 需要加密的内容

* @param encoding 编码

* @return

* @throws UnsupportedEncodingException

*/

public static String encrypt(String data, String encoding) throws UnsupportedEncodingException {

MessageDigest messageDigest = null;

try {

messageDigest = MessageDigest.getInstance("MD5");

messageDigest.reset();

messageDigest.update(data.getBytes(encoding));

} catch (NoSuchAlgorithmException e) {

System.out.println("NoSuchAlgorithmException caught!");

System.exit(-1);

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

byte[] byteArray = messageDigest.digest();

StringBuffer md5StrBuff = new StringBuffer();

for (int i = 0; i < byteArray.length; i++) {

if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)

md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));

else

md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));

}

return md5StrBuff.toString().toUpperCase();

}

/**

* @param args

*/

public static void main(String[] args) {

String data = "中国";

// 加密

try {

String temp=OutterMD5.encrypt(data, "GBK");

System.out.println ("temp===="+temp);

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

}

MD5加密文件:

在讲解MD5加密文件之前,首先请大家明确的是:加密文件的实质就是加密文件中的内容,与文件名称或是结构其他因素无关。

上源码

Java实现MD5加密和文件校验-含加密字符串以及文件的源码

MD5加密文件

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.math.BigInteger;

import java.nio.MappedByteBuffer;

import java.nio.channels.FileChannel;

import java.security.MessageDigest;

/**

* 加密文件2017年4月18日 10:02:22

*/

public static String getMd5ByFile(File file) {

String value = null;

FileInputStream in = null;

try {

in = new FileInputStream(file);

} catch (FileNotFoundException e1) {

e1.printStackTrace();

}

try {

MappedByteBuffer byteBuffer = in.getChannel().map(FileChannel.MapMode.READ_ONLY, 0, file.length());

MessageDigest md5 = MessageDigest.getInstance("MD5");

md5.update(byteBuffer);

BigInteger bi = new BigInteger(1, md5.digest());

value = bi.toString(16);

} catch (Exception e) {

e.printStackTrace();

} finally {

if (null != in) {

try {

in.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return value;

}

0 0