使用Java MD5 为文件和字符串加密

加密工具类

package

com.kaige123.util;

import

java.io.File;

import

java.io.FileInputStream;

import

java.io.IOException;

import

java.nio.MappedByteBuffer;

import

java.nio.channels.FileChannel;

import

java.security.MessageDigest;

/**

* MD5文字和文件加密

* http://www.kaige123.com

* @author凯哥

*/

public class

MD5Util {

//16进制

protected static char hex[] = {

'0', '1', '2',  '3', '4', '5', '6','7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};

protected static MessageDigest  messagedigest = null;

static {

try {

//得到MD5实例

messagedigest =  MessageDigest.getInstance("MD5");

} catch (Exception e) {

}

}

//得到文件MD5钥匙

public static String  getFileMD5String(File file) throws IOException {

FileInputStream in = new FileInputStream(file);

FileChannel ch =  in.getChannel();

MappedByteBuffer byteBuffer  =

ch.map(FileChannel.MapMode.READ_ONLY,  0,

file.length());

messagedigest.update(byteBuffer);

return  bufferToHex(messagedigest.digest());

}

//得到MD5字符串钥匙

public static String  getMD5String(String s) {

return  getMD5String(s.getBytes());

}

public static String  getMD5String(byte[] bytes) {

messagedigest.update(bytes);

return  bufferToHex(messagedigest.digest());

}

private static String bufferToHex(byte  bytes[]) {

return bufferToHex(bytes,  0, bytes.length);

}

private static String  bufferToHex(byte bytes[], int m, int n) {

StringBuffer stringbuffer =  new StringBuffer(2 * n);

int k = m + n;

for (int l = m; l < k;  l++) {

appendHexPair(bytes[l],  stringbuffer);

}

return  stringbuffer.toString();

}

private static void  appendHexPair(byte bt, StringBuffer stringbuffer) {

char c0 = hex[(bt &  0xf0) >> 4];

char c1 = hex[bt &  0xf];

stringbuffer.append(c0);

stringbuffer.append(c1);

}

}

测试类

package

com.kaige123.util;

import

java.io.File;

import

java.io.IOException;

/**

*测试类

* @author凯哥

*/

public class

Test {

public static void main(String[]  args) throws IOException {

//得到字符串MD5

String md5str=MD5Util.getMD5String("凯哥是个胖子");

System.out.println(md5str);

//得到文件的MD5

String  filemd5str=MD5Util.getFileMD5String(new File("c:/kaige/a.txt"));

System.out.println(filemd5str);

}

}

w[���W�4B�

你可能感兴趣的:(使用Java MD5 为文件和字符串加密)