無線&移動互聯網技術研發

          換位思考·····
          posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          java MD5加密

          Posted on 2009-05-12 18:13 Gavin.lee 閱讀(310) 評論(0)  編輯  收藏 所屬分類: java SE & EE

          package com.Gavin.tools.util.jiami;

          import java.io.BufferedInputStream;
          import java.io.File;
          import java.io.FileInputStream;
          import java.io.InputStream;
          import java.security.MessageDigest;

          /**
           * MD5 data generate tool class
           * File / String 
           * @author Gavin.lee
           * @date 09-5-12 pm
           *
           */


          public class MD5Generator {
           
           private static InputStream createInputStream(File file) {
            InputStream is = null;
            try {
             is = new BufferedInputStream(new FileInputStream(file));
            } catch(Exception e) {
             e.printStackTrace();
            }
            return is;
           }
           
           private static String generateMD5ForFile(File file) {
            InputStream is = createInputStream(file);
            byte[] buf = new byte[4096];
            try {
             MessageDigest md = MessageDigest.getInstance("MD5");
             int count = 0;
             while((count = is.read(buf)) > 0) {
              md.update(buf, 0, count);
             }
             byte[] md5 = md.digest();
             is.close();
             buf = null;
             return md5HashToString(md5);
            } catch (Exception e) {
             e.printStackTrace();
            }
            
            return null;
           }
           
           private static String generateMD5(byte[] data, int offset, int len) {
            if(data.length == 0) {
             return "";
            }
            
            try {
             MessageDigest md = MessageDigest.getInstance("MD5");
             md.update(data, offset, len);
             byte[] md5 = md.digest();
             return md5HashToString(md5);
            } catch (Exception e) {
             e.printStackTrace();
            }
            
            return null;
           }
           
           private static String md5HashToString(byte[] input) {
            StringBuffer strBuf = new StringBuffer();
            int value;
            for(int i = 0; i < input.length; i++) {
             value = input[i];
             value = value > 0 ? value : value + 256;
             String str = Integer.toHexString(value);
             if(str.length() < 2)
              str = "0" + str;
             strBuf.append(str);
            }
            return strBuf.toString();
           }
           
           public static String getMD5Value(File file) {
            return generateMD5ForFile(file);
           }
           
           public static String getMD5Value(String src) {
            if(src == null) {
             return null;
            }
            if(src == "") {
             return "";
            }
             
            byte[] data = src.getBytes();
            return generateMD5(data, 0, data.length);
           }
           
           public static void main(String[] args) {
            //文件加密
            String file = "c:\\test.txt";
            long tmOrg = System.currentTimeMillis();
            String md5  = getMD5Value(new File(file));
            System.out.println("MD5: " + md5);
            long tmLast = System.currentTimeMillis() - tmOrg;
            System.out.println("Use time :" + tmLast + " ms");
            
            //串加密
            String str = "pass";
            System.out.println(getMD5Value(str));
            str = "password";
            System.out.println(getMD5Value(str));
            str = getMD5Value(str);
            System.out.println(str);
            
           }
          }

          主站蜘蛛池模板: 石林| 塘沽区| 海口市| 鄂伦春自治旗| 怀集县| 丽江市| 南通市| 贵德县| 云龙县| 井陉县| 安顺市| 扎鲁特旗| 阳山县| 海伦市| 慈溪市| 太和县| 岑巩县| 泰来县| 南通市| 鞍山市| 大兴区| 娱乐| 庄浪县| 长寿区| 万宁市| 炎陵县| 濮阳市| 江阴市| 阿图什市| 隆子县| 望江县| 广灵县| 邵阳县| 舞钢市| 油尖旺区| 三门峡市| 大港区| 平湖市| 淮阳县| 韩城市| 孟村|