1. 程式人生 > >使用Java MD5 為文件和字符串加密

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

文件加密 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
 [email protected] 凱哥 
 */
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;
/**
 * 測試類
 [email protected] 凱哥
 */
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 為文件和字符串加密