<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java學(xué)習(xí)

    java學(xué)習(xí)

     

    des對文件快速加解密

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package com.kaishengit.util.desfile;

    import com.google.gson.Gson;
    import javax.crypto.KeyGenerator;
    import javax.crypto.CipherInputStream;
    import javax.crypto.Cipher;
    import javax.crypto.CipherOutputStream;
    import java.security.SecureRandom;
    import java.security.Key;
    import java.io.*;
    import java.security.*;
    import java.util.ArrayList;
    import java.util.List;

    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;

    /**
     *
     * @author Y-T測試成功
     */
    public class DesFile3 {

        //  private static final String k = "24234";
        Key key;

        public DesFile3() {
            getKey("24234");//生成密匙
        }

        /**
         * 根據(jù)參數(shù)生成KEY
         */
        public void getKey(String strKey) {
            try {
                KeyGenerator _generator = KeyGenerator.getInstance("DES");
                _generator.init(new SecureRandom(strKey.getBytes()));
                this.key = _generator.generateKey();

                _generator = null;
            } catch (Exception e) {
                throw new RuntimeException("Error initializing SqlMap class. Cause: " + e);
            }
        }

        //加密以byte[]明文輸入,byte[]密文輸出   
        private byte[] getEncCode(byte[] byteS) {
            byte[] byteFina = null;
            Cipher cipher;
            try {
                cipher = Cipher.getInstance("DES");
                cipher.init(Cipher.ENCRYPT_MODE, key);
                byteFina = cipher.doFinal(byteS);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                cipher = null;
            }

            return byteFina;
        }
        //  加密String明文輸入,String密文輸出 

        public String setEncString(String strMing) {
            BASE64Encoder base64en = new BASE64Encoder();
            String s = null;
            try {
                s = base64en.encode(getEncCode(strMing.getBytes("UTF8")));
            } catch (Exception e) {
                e.printStackTrace();
            }
            return s;
        }

        public String setEncString(String strMing, int count) {
            BASE64Encoder base64en = new BASE64Encoder();
            String s = strMing;
            if (s != null) {
                for (int i = 0; i < count; i++) {
                    try {
                        s = base64en.encode(getEncCode(s.getBytes("UTF8")));
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            } else {
                return s;
            }
            return s;
        }
        // 解密以byte[]密文輸入,以byte[]明文輸出   

        public byte[] getDesCode(byte[] byteD) {
            Cipher cipher;
            byte[] byteFina = null;
            try {
                cipher = Cipher.getInstance("DES");
                cipher.init(Cipher.DECRYPT_MODE, key);
                byteFina = cipher.doFinal(byteD);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                cipher = null;
            }
            return byteFina;
        }
        // 解密:以String密文輸入,String明文輸出  

        public String setDesString(String strMi) {
            BASE64Decoder base64De = new BASE64Decoder();
            String s = null;
            try {
                s = new String(getDesCode(base64De.decodeBuffer(strMi)), "UTF8");
            } catch (Exception e) {
                e.printStackTrace();
            }
            return s;
        }

        public String setDesString(String strMi, int count) {
            BASE64Decoder base64De = new BASE64Decoder();
            String s = strMi;
            if (s != null) {
                for (int i = 0; i < count; i++) {
                    try {
                        s = new String(getDesCode(base64De.decodeBuffer(s)), "UTF8");
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            } else {
                return s;
            }
            return s;
        }

        /**
         * 文件file進(jìn)行加密并保存目標(biāo)文件destFile中
         *
         * @param file 要加密的文件 如c:/test/srcFile.txt
         * @param destFile 加密后存放的文件名 如c:/加密后文件.txt
         */
        public void fileEncrypt(String file, String destFile) throws Exception {
            Cipher cipher = Cipher.getInstance("DES");
            // cipher.init(Cipher.ENCRYPT_MODE, getKey());
            cipher.init(Cipher.ENCRYPT_MODE, this.key);
            InputStream is = new FileInputStream(file);
            OutputStream out = new FileOutputStream(destFile);
            CipherInputStream cis = new CipherInputStream(is, cipher);
            byte[] buffer = new byte[1024];
            int r;
            while ((r = cis.read(buffer)) > 0) {
                out.write(buffer, 0, r);
            }
            cis.close();
            is.close();
            out.close();
        }

        public void fileEncrypt(String file, String destFile, int count) throws Exception {
            if(file!=null&&!"".equals(file)&&destFile!=null&&!"".equals(destFile)){
                if(count==1){
                        fileEncrypt( file,  destFile);
                }else {
                     String temp="";
             String st=file;
             for(int i=0;i<count;i++){
                  if(i!=(count-1)){
                     temp="src/jia"+System.currentTimeMillis();
                      fileEncrypt( st,  temp);
               
                    File f = new File(st);
                    f.delete();
                    st=temp;
               }else {
                      fileEncrypt( st,  destFile);
                      File f = new File(st);
                      f.delete();
               }
             }
                }
            }
       
        }

        /**
         * 文件采用DES算法解密文件
         *
         * @param file 已加密的文件 如c:/加密后文件.txt
         *         * @param destFile 解密后存放的文件名 如c:/ test/解密后文件.txt
         */
        public void fileDecrypt(String file, String dest) throws Exception {
            Cipher cipher = Cipher.getInstance("DES");
            cipher.init(Cipher.DECRYPT_MODE, this.key);
            InputStream is = new FileInputStream(file);
            OutputStream out = new FileOutputStream(dest);
            CipherOutputStream cos = new CipherOutputStream(out, cipher);
            byte[] buffer = new byte[1024];
            int r;
            while ((r = is.read(buffer)) >= 0) {
                cos.write(buffer, 0, r);
            }
            cos.close();
            out.close();
            is.close();
        }

        public void fileDecrypt(String file, String destFile, int count) throws Exception {

           if(file!=null&&!"".equals(file)&&destFile!=null&&!"".equals(destFile)){
                if(count==1){
                        fileDecrypt( file,  destFile);
                }else {
                     String temp="";
             String st=file;
             for(int i=0;i<count;i++){
                  if(i!=(count-1)){
                     temp="src/jie"+System.currentTimeMillis();
                      fileDecrypt( st,  temp);
                      File f = new File(st);
                      f.delete();
                      st=temp;
               }else {
                      fileDecrypt( st,  destFile);
                      File f = new File(st);
                      f.delete();
               }
             }
                }
            }
        }

        public static void main(String[] args) throws Exception {
            DesFile3 td = new DesFile3();
            long begin = System.currentTimeMillis();


            td.fileEncrypt("F:\\webservice\\webservice第一部分視頻\\02_wsimport的使用.avi", "F:\\webservice\\webservice第一部分視頻\\04",2); //加密
           
        long jia = System.currentTimeMillis();
       System.out.println((jia-begin)/1000);
         long begin1 = System.currentTimeMillis();
          //  td.fileDecrypt("F:\\webservice\\webservice第一部分視頻\\04", "F:\\webservice\\webservice第一部分視頻\\04.a"); //解密
               td.fileDecrypt("F:\\webservice\\webservice第一部分視頻\\04", "F:\\webservice\\webservice第一部分視頻\\04.avi",2); //解密
         long jie = System.currentTimeMillis();
          System.out.println((jie-begin1)/1000);
    //        List<User> list = new ArrayList<User>();
    //        User user = new User();
    //        user.setId(1);
    //        user.setAge(21);
    //        user.setName("楊軍威");
    //        User user1 = new User();
    //        user1.setId(2);
    //        user1.setAge(23);
    //        user1.setName("北京");
    //        list.add(user);
    //        list.add(user1);
    //        Gson gson = new Gson();
    //        String res = gson.toJson(list);
    //        System.out.println(res);
    //        System.out.println("加密==" + td.setEncString(res,2));
    //        //  td.setEncString(res);
    //        System.out.println("解密==" + td.setDesString(td.setEncString(res,2),2));
        }
    }

    posted on 2013-09-11 14:27 楊軍威 閱讀(401) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品国产福利片| 亚洲av无码av制服另类专区| 亚洲精品第一国产综合境外资源| heyzo亚洲精品日韩| 亚洲日韩中文无码久久| 亚洲性天天干天天摸| 亚洲fuli在线观看| 精品一区二区三区无码免费直播| 国产一二三四区乱码免费| 精品国产污污免费网站aⅴ| 免费观看男人免费桶女人视频| 亚洲国产精品人人做人人爽 | 国产免费黄色大片| 亚洲中文字幕无码永久在线| 久久亚洲AV无码精品色午夜| 精品久久久久久久久亚洲偷窥女厕 | 国产精品亚洲а∨无码播放| 亚洲成人黄色在线观看| 国产午夜亚洲精品不卡免下载| 东方aⅴ免费观看久久av| 美女视频黄a视频全免费| 亚洲国产精品一区二区第一页免| 久久亚洲国产视频| 亚洲av无码片vr一区二区三区| 国精产品一区一区三区免费视频| 性做久久久久久免费观看| 亚洲日韩中文字幕日韩在线| 亚洲最大在线观看| 一个人看的hd免费视频| 曰批视频免费30分钟成人| 亚洲日韩中文在线精品第一| 亚洲乱码一区av春药高潮| 久久久WWW成人免费精品| 成人免费视频小说| 亚洲视频在线播放| 免费福利资源站在线视频| 思思re热免费精品视频66| 国产亚洲AV手机在线观看| 亚洲乱人伦中文字幕无码| 99久久综合精品免费| 亚洲精品WWW久久久久久|