最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何用java給文件加密的簡單實現(xiàn)

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

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

文件加密

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é)碼的集合數(shù)組
        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);
            // 把加密后的數(shù)替換原集合中的數(shù)
            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文件內(nèi)容

將input的內(nèi)容加密后,寫入out.txt中

文件解密

總結(jié)

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

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

相關(guān)文章

  • springBoot  創(chuàng)建定時任務(wù)過程詳解

    springBoot 創(chuàng)建定時任務(wù)過程詳解

    這篇文章主要介紹了springBoot 創(chuàng)建定時任務(wù)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • mybatis同一張表多次連接查詢相同列賦值問題小結(jié)

    mybatis同一張表多次連接查詢相同列賦值問題小結(jié)

    這篇文章主要介紹了mybatis同一張表多次連接查詢相同列賦值問題,非常不錯,具有參考借鑒價值,需要的的朋友參考下
    2017-01-01
  • SpringBoot無法訪問/static下靜態(tài)資源的解決

    SpringBoot無法訪問/static下靜態(tài)資源的解決

    這篇文章主要介紹了SpringBoot無法訪問/static下靜態(tài)資源的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • MyBatis-Plus?分頁不生效的解決方法

    MyBatis-Plus?分頁不生效的解決方法

    本文主要介紹了MyBatis-Plus?分頁不生效的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Spring?Boot使用Hibernate-Validator校驗參數(shù)時的長度校驗方法詳解

    Spring?Boot使用Hibernate-Validator校驗參數(shù)時的長度校驗方法詳解

    這篇文章主要給大家介紹了關(guān)于Spring?Boot使用Hibernate-Validator校驗參數(shù)時的長度校驗方法的相關(guān)資料,在Spring Boot中可以使用Spring Boot Validation來對參數(shù)名稱進(jìn)行校驗,需要的朋友可以參考下
    2023-08-08
  • Java基礎(chǔ)之自動裝箱,注解操作示例

    Java基礎(chǔ)之自動裝箱,注解操作示例

    這篇文章主要介紹了Java基礎(chǔ)之自動裝箱,注解操作,結(jié)合實例形式分析了java拆箱、裝箱、靜態(tài)導(dǎo)入、注釋等相關(guān)使用技巧,需要的朋友可以參考下
    2019-08-08
  • Java SSL與TLS客戶端證書配置方式

    Java SSL與TLS客戶端證書配置方式

    這篇文章主要介紹了Java SSL與TLS客戶端證書配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 詳解Kotlin 高階函數(shù) 與 Lambda 表達(dá)式

    詳解Kotlin 高階函數(shù) 與 Lambda 表達(dá)式

    這篇文章主要介紹了詳解Kotlin 高階函數(shù) 與 Lambda 表達(dá)式的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • java 實現(xiàn)通過 post 方式提交json參數(shù)操作

    java 實現(xiàn)通過 post 方式提交json參數(shù)操作

    這篇文章主要介紹了java 實現(xiàn)通過 post 方式提交json參數(shù)操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 5分鐘快速學(xué)會spring boot整合JdbcTemplate的方法

    5分鐘快速學(xué)會spring boot整合JdbcTemplate的方法

    這篇文章主要給大家介紹了如何通過5分鐘快速學(xué)會spring boot整合JdbcTemplate的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用spring boot整合JdbcTemplate具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12

最新評論

新平| 潞城市| 留坝县| 张掖市| 民和| 济阳县| 广元市| 交城县| 平度市| 句容市| 太湖县| 连云港市| 依兰县| 西乌珠穆沁旗| 乌海市| 轮台县| 康定县| 瑞昌市| 沙雅县| 兖州市| 鹤山市| 利川市| 牡丹江市| 两当县| 南阳市| 称多县| 田阳县| 西峡县| 分宜县| 房产| 五指山市| 缙云县| 凭祥市| 日土县| 石景山区| 高州市| 拉孜县| 闻喜县| 乌拉特前旗| 荣昌县| 化州市|