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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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文字和文件加密<br>
 *http://www.kaige123.com
 *@author 凯哥 
 */
public class MD5Util {
         //16进制
         protectedstatic char hex[] = {
                            ‘0‘,‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘,‘7‘, ‘8‘, ‘9‘, ‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘, ‘F‘};
         protectedstatic MessageDigest messagedigest = null;
         static{
                   try{
                            //得到MD5实例
                            messagedigest= MessageDigest.getInstance("MD5");
                   }catch (Exception e) {
                   }
         }
         //得到文件MD5钥匙
         publicstatic String getFileMD5String(File file) throws IOException {
                   FileInputStreamin = new FileInputStream(file);
                   FileChannelch = in.getChannel();
                   MappedByteBufferbyteBuffer =
                                     ch.map(FileChannel.MapMode.READ_ONLY,0,
                                     file.length());
                   messagedigest.update(byteBuffer);
                   returnbufferToHex(messagedigest.digest());
         }
         //得到MD5字符串钥匙
         publicstatic String getMD5String(String s) {
                   returngetMD5String(s.getBytes());
         }
         publicstatic String getMD5String(byte[] bytes) {
                   messagedigest.update(bytes);
                   returnbufferToHex(messagedigest.digest());
         }
         privatestatic String bufferToHex(byte bytes[]) {
                   returnbufferToHex(bytes, 0, bytes.length);
         }
         privatestatic String bufferToHex(byte bytes[], int m, int n) {
                   StringBufferstringbuffer = new StringBuffer(2 * n);
                   intk = m + n;
                   for(int l = m; l < k; l++) {
                            appendHexPair(bytes[l],stringbuffer);
                   }
                   returnstringbuffer.toString();
         }
         privatestatic void appendHexPair(byte bt, StringBuffer stringbuffer) {
                   charc0 = hex[(bt & 0xf0) >> 4];
                   charc1 = 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 {
         publicstatic void main(String[] args) throws IOException {
                   //得到字符串MD5
                   Stringmd5str=MD5Util.getMD5String("凯哥是个胖子");
                   System.out.println(md5str);
        
                   //得到文件的MD5
                   Stringfilemd5str=MD5Util.getFileMD5String(new File("c:/kaige/a.txt"));
                   System.out.println(filemd5str);
         }
}


以上是关于使用Java MD5 为文件和字符串加密的主要内容,如果未能解决你的问题,请参考以下文章

java MD5加密

Java利用MessageDigest提供的MD5算法加密字符串或文件

jmeter如何使用使用MD5加密?

Java MD5加密

MD5加密加盐

JAVA的md5解密后怎么是乱码,问题出在哪里啊