溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java為文件加密的方法

發(fā)布時間:2020-06-09 09:54:34 來源:億速云 閱讀:343 作者:Leah 欄目:編程語言

這篇文章給大家分享的是java為文件加密的方法。小編覺得挺實用的,因此分享給大家學習。如下資料是關于設置環(huán)境變量的內(nèi)容。              

用輸入緩沖字節(jié)流讀取文件內(nèi)容到緩沖區(qū)內(nèi),再用字節(jié)數(shù)組輸出緩沖流寫到一個字節(jié)數(shù)組內(nèi)

  // 第一步文件的加密
        // 先用字節(jié)緩沖流讀取文件
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(“你要加密的文件全路徑”));
        // 再用字節(jié)數(shù)組輸出流將文件寫到一個字節(jié)數(shù)組內(nèi)
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        調(diào)用writeFile2方法寫到一個字節(jié)數(shù)組內(nèi)
        writeFile2(baos, bis)
        // 將字節(jié)數(shù)組輸出流內(nèi)的內(nèi)容轉(zhuǎn)換成一個字節(jié)數(shù)組
        byte[] byteArray = baos.toByteArray();
writeFile2方法:
/**

    private static void writeFile2(ByteArrayOutputStream baos, BufferedInputStream bis) throws Exception {
        byte []  bytes = new byte [1024]; 
        int len = -1;
        while ((len= bis.read(bytes))!=-1) {
            baos.write(bytes, 0, len);
        }
        bis.close();
    }

通過對數(shù)組內(nèi)每個數(shù)據(jù)進行異或運算實現(xiàn)加密,因為異或同一個數(shù)兩次還是原來本身,通過這個實現(xiàn)加密和解密

private static byte[] jiami(byte[] byteArray) {
        for (int i = 0; i < byteArray.length; i++) {
            byteArray[i] = (byte) (byteArray[i] ^ 96);// 將異或后的數(shù)據(jù)強轉(zhuǎn)成字節(jié)類型
        }
        return byteArray;
    }

將數(shù)組內(nèi)容分成三份。

int size = byteArray.length / 3;
        byte[] byteArray1 = new byte[size];
        byte[] byteArray2 = new byte[size];
        byte[] byteArray3 = new byte[byteArray.length-2*size];
        for (int i = 0; i < size; i++) {
            byteArray1[i] = byteArray[i];
        }
        for (int i = size; i < 2*size; i++) {
            byteArray2[i - size] = byteArray[i];
        }
        for (int i = size * 2; i < byteArray.length; i++) {
            byteArray3[i - size * 2] = byteArray[i];
        }

4.將這些分好的數(shù)組通過流的方式寫到具體的文件內(nèi)

ByteArrayInputStream bais = null;
        BufferedOutputStream bos = null;
        for (int i = 0; i < 3; i++) {
            switch (i) {
            case 0:// 第一份
                bais = new ByteArrayInputStream(byteArray1);
                // 用字節(jié)緩沖輸出流將數(shù)組內(nèi)容寫到具體的位置
                bos = new BufferedOutputStream(new FileOutputStream("F:/test/111.dll"));
                // 下面還要用到這個方法寫數(shù)據(jù)的方法,可以定義一個方法
                writeFile(size, bais, bos, 0);
                break;
            case 1:// 第二份
                bais = new ByteArrayInputStream(byteArray2);
                // 用字節(jié)緩沖輸出流將數(shù)組內(nèi)容寫到具體的位置
                bos = new BufferedOutputStream(new FileOutputStream("F:/test/112.dll"));
                writeFile(size, bais, bos, 1);
                break;
            case 2:// 第三份
                bais = new ByteArrayInputStream(byteArray3);
                bos = new BufferedOutputStream(new FileOutputStream("F:/test/113.dll"));
                writeFile(byteArray.length-2*size, bais, bos, 2);
                break;
            }
        }
writeFile方法
     private static void writeFile(int size, ByteArrayInputStream bais, BufferedOutputStream bos, int i)
            throws Exception {

        byte[] bytes = new byte[1024];
        int len = -1;
        while ((len = bais.read(bytes)) != -1) {
            bos.write(bytes, 0, len);
        }
        bos.close();
    }

關于java為文件加密的方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI