亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何用java給文件加密的簡單實現

 更新時間:2023年12月13日 15:03:25   作者:何中應  
文件加密,簡單來說就是把文件讀取出來,把讀取出來的字節(jié)碼數組進行遍歷,把每一個碼值和一個秘鑰(隨便一個數)進行異或運算,將運算后的結果全部寫入到文件里,這篇文章主要介紹了如何用java給文件加密的簡單實現,需要的朋友可以參考下

思路:文件加密,簡單來說就是把文件讀取出來,把讀取出來的字節(jié)碼數組進行遍歷,把每一個碼值和一個秘鑰(隨便一個數)進行異或運算,將運算后的結果全部寫入到文件里。因為文件的碼值全都做了改變,文件自然就無法打開了,這是加密過程。解密過程就是再執(zhí)行一次,因為數字對另一個數進行兩次異或運算等于數字本身。再異或一次碼值就恢復原樣了,文件自然也就可以恢復原樣。

文件加密

import java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
 * 文件加密
 */
public class FileEncrypt {
    public static void main(String[] args) throws IOException {
        // 需要加密/解密的文件路徑
        String inputPath = "out.txt";
        // 加密/解密后的文件路徑
        String outPath = "input.txt";
        // 用于存儲文件字節(jié)碼的集合數組
        List<Byte> byteList = new ArrayList<>();
        // 秘鑰
        Byte key = 17;
        // 讀取文件
        readFile(inputPath, byteList);
        // 加密/解密
        encryption(byteList, key);
        // 生成加密/解密后的文件
        writeText(byteList, outPath);
    }
    /**
     * 讀取文件
     *
     * @param inputPath 文件輸入路徑
     * @param byteList  文件的字節(jié)碼列表
     * @throws IOException
     */
    public static void readFile(String inputPath, List<Byte> byteList) throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(inputPath));
        byte[] bytes = new byte[1024];
        int len;
        while ((len = bis.read(bytes)) != -1) {
            for (int i = 0; i < len; i++) {
                byteList.add(bytes[i]);
            }
        }
        bis.close();
    }
    /**
     * 加密/解密
     *
     * @param byteList
     * @param key
     */
    public static void encryption(List<Byte> byteList, byte key) {
        for (int i = 0; i < byteList.size(); i++) {
            Byte aByte = byteList.get(i);
            // 把集合中的字節(jié)碼與秘鑰或運算
            Byte enNum = (byte) (aByte ^ key);
            // 把加密后的數替換原集合中的數
            byteList.set(i, enNum);
        }
    }
    /**
     * 生成加密/解密后的文件
     *
     * @param byteList
     * @param outPath
     * @throws IOException
     */
    public static void writeText(List<Byte> byteList, String outPath) throws IOException {
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outPath));
        byte[] tempByte = new byte[byteList.size()];
        for (int i = 0; i < byteList.size(); i++) {
            tempByte[i] = byteList.get(i);
        }
        bos.write(tempByte);
        bos.close();
    }
}

input.txt文件內容

將input的內容加密后,寫入out.txt中

文件解密

總結

這就是對文件內容加密的簡單實現,這里的文件可以換成圖片或者其他類型的文件,都可以。另外,完全可以把inputPath和outPath設置成一樣,這樣就不會產生新文件了,運行一次文件加密,再運行一次,文件解密,非常方便。

到此這篇關于如何用java給文件加密的簡單實現的文章就介紹到這了,更多相關java文件加密內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Guava中這些Map技巧可以讓代碼量減少了50%

    Guava中這些Map技巧可以讓代碼量減少了50%

    guava提供了非常強大的操作,可以讓我們把java代碼寫的很簡潔,下面這篇文章主要給大家介紹了關于Guava中這些Map使用技巧可以讓代碼量減少了50%的相關資料,需要的朋友可以參考下
    2022-11-11
  • 詳解基于Spring Cloud幾行配置完成單點登錄開發(fā)

    詳解基于Spring Cloud幾行配置完成單點登錄開發(fā)

    這篇文章主要介紹了詳解基于Spring Cloud幾行配置完成單點登錄開發(fā),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 用Java制作用戶登錄界面超詳細圖文教程

    用Java制作用戶登錄界面超詳細圖文教程

    很多人學習Java的第一個任務是使用Java設計客戶端登錄界面中,希望我的學習方法與總結能幫助到需要的朋友,這篇文章主要給大家介紹了關于用Java制作用戶登錄界面的相關資料,需要的朋友可以參考下
    2024-06-06
  • 關于idea中出現nbsp和zwsp的完美解決辦法

    關于idea中出現nbsp和zwsp的完美解決辦法

    本文給大家介紹關于idea中出現nbsp和zwsp的解決辦法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-06-06
  • Springboot整合mybatis開啟二級緩存的實現示例

    Springboot整合mybatis開啟二級緩存的實現示例

    在一級緩存中,是查詢兩次數據庫的,顯然這是一種浪費,既然SQL查詢相同,就沒有必要再次查庫了,直接利用緩存數據即可,這種思想就是MyBatis二級緩存的初衷,本文就詳細的介紹了Springboot整合mybatis開啟二級緩存,感興趣的可以了解一下
    2022-05-05
  • SpringBoot如何實現持久化登錄狀態(tài)獲取

    SpringBoot如何實現持久化登錄狀態(tài)獲取

    這篇文章主要介紹了SpringBoot 如何實現持久化登錄狀態(tài)獲取,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java 高并發(fā)二:多線程基礎詳細介紹

    Java 高并發(fā)二:多線程基礎詳細介紹

    本文主要介紹Java 高并發(fā)多線程的知識,這里整理詳細的資料來解釋線程的知識,有需要的學習高并發(fā)的朋友可以參考下
    2016-09-09
  • Java中的枚舉enum詳細解讀

    Java中的枚舉enum詳細解讀

    這篇文章主要介紹了Java中的枚舉enum詳細解讀,當我們使用enum關鍵字開發(fā)一個枚舉類時,默認會繼承Enum類,而且是一個final類,當有多個枚舉對象時,使用逗號 ,隔開,最后一個用分號;結尾,需要的朋友可以參考下
    2024-01-01
  • mybatis 在typeAliases別名時報錯的解決

    mybatis 在typeAliases別名時報錯的解決

    這篇文章主要介紹了mybatis 在typeAliases別名時報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 使用feign服務調用添加Header參數

    使用feign服務調用添加Header參數

    這篇文章主要介紹了使用feign服務調用添加Header參數的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評論