分享

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

 流曲频阳 2017-06-21
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.
 *@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);
         }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多