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

Java實(shí)現(xiàn)文件的加密解密功能示例

 更新時(shí)間:2017年10月07日 01:40:40   作者:FC WORLD!!!  
這篇文章主要介紹了Java實(shí)現(xiàn)文件的加密解密功能,結(jié)合具體實(shí)例形式詳細(xì)分析了java針對(duì)文件的讀取、判斷、加密、解密等相關(guān)步驟與操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Java實(shí)現(xiàn)文件的加密解密功能分享給大家供大家參考,具體如下:

package com.copy.encrypt;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.RandomAccessFile;
public class FileEncryptAndDecrypt {
  /**
   * 文件file進(jìn)行加密
   * @param fileUrl 文件路徑
   * @param key 密碼
   * @throws Exception
   */
  public static void encrypt(String fileUrl, String key) throws Exception {
    File file = new File(fileUrl);
    String path = file.getPath();
    if(!file.exists()){
      return;
    }
    int index = path.lastIndexOf("\\");
    String destFile = path.substring(0, index)+"\\"+"abc";
    File dest = new File(destFile);
    InputStream in = new FileInputStream(fileUrl);
    OutputStream out = new FileOutputStream(destFile);
    byte[] buffer = new byte[1024];
    int r;
    byte[] buffer2=new byte[1024];
    while (( r= in.read(buffer)) > 0) {
        for(int i=0;i<r;i++)
        {
          byte b=buffer[i];
          buffer2[i]=b==255?0:++b;
        }
        out.write(buffer2, 0, r);
        out.flush();
    }
    in.close();
    out.close();
    file.delete();
    dest.renameTo(new File(fileUrl));
    appendMethodA(fileUrl, key);
    System.out.println("加密成功");
  }
  /**
   *
   * @param fileName
   * @param content 密鑰
   */
   public static void appendMethodA(String fileName, String content) {
      try {
        // 打開(kāi)一個(gè)隨機(jī)訪問(wèn)文件流,按讀寫方式
        RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
        // 文件長(zhǎng)度,字節(jié)數(shù)
        long fileLength = randomFile.length();
        //將寫文件指針移到文件尾。
        randomFile.seek(fileLength);
        randomFile.writeBytes(content);
        randomFile.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
   }
   /**
   * 解密
   * @param fileUrl 源文件
   * @param tempUrl 臨時(shí)文件
   * @param ketLength 密碼長(zhǎng)度
   * @return
   * @throws Exception
   */
   public static String decrypt(String fileUrl, String tempUrl, int keyLength) throws Exception{
      File file = new File(fileUrl);
      if (!file.exists()) {
        return null;
      }
      File dest = new File(tempUrl);
      if (!dest.getParentFile().exists()) {
        dest.getParentFile().mkdirs();
      }
      InputStream is = new FileInputStream(fileUrl);
      OutputStream out = new FileOutputStream(tempUrl);
      byte[] buffer = new byte[1024];
      byte[] buffer2=new byte[1024];
      byte bMax=(byte)255;
      long size = file.length() - keyLength;
      int mod = (int) (size%1024);
      int div = (int) (size>>10);
      int count = mod==0?div:(div+1);
      int k = 1, r;
      while ((k <= count && ( r = is.read(buffer)) > 0)) {
        if(mod != 0 && k==count) {
          r = mod;
        }
        for(int i = 0;i < r;i++)
        {
          byte b=buffer[i];
          buffer2[i]=b==0?bMax:--b;
        }
        out.write(buffer2, 0, r);
        k++;
      }
      out.close();
      is.close();
      return tempUrl;
    }
   /**
   * 判斷文件是否加密
   * @param fileName
   * @return
   */
   public static String readFileLastByte(String fileName, int keyLength) {
     File file = new File(fileName);
     if(!file.exists())return null;
     StringBuffer str = new StringBuffer();
      try {
        // 打開(kāi)一個(gè)隨機(jī)訪問(wèn)文件流,按讀寫方式
        RandomAccessFile randomFile = new RandomAccessFile(fileName, "r");
        // 文件長(zhǎng)度,字節(jié)數(shù)
        long fileLength = randomFile.length();
        //將寫文件指針移到文件尾。
        for(int i = keyLength ; i>=1 ; i--){
          randomFile.seek(fileLength-i);
          str.append((char)randomFile.read());
        }
        randomFile.close();
        return str.toString();
      } catch (IOException e) {
        e.printStackTrace();
      }
      return null;
     }
}

PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:

文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode

MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password

在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt

在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha

在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode

更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java字符與字符串操作技巧總結(jié)》、《java日期與時(shí)間操作技巧匯總》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 詳解SpringBoot讀取Yml配置文件的3種方法

    詳解SpringBoot讀取Yml配置文件的3種方法

    本文主要介紹了詳解SpringBoot讀取Yml配置文件的3種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • idea中l(wèi)ombok啟用的方法示例

    idea中l(wèi)ombok啟用的方法示例

    這篇文章主要介紹了idea中l(wèi)ombok啟用的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 基于springboot與axios的整合問(wèn)題

    基于springboot與axios的整合問(wèn)題

    這篇文章主要介紹了springboot與axios的整合問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Jetbrains系列產(chǎn)品重置試用思路詳解

    Jetbrains系列產(chǎn)品重置試用思路詳解

    這篇文章主要介紹了Jetbrains系列產(chǎn)品重置試用思路詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 詳解SpringCloud微服務(wù)架構(gòu)之Hystrix斷路器

    詳解SpringCloud微服務(wù)架構(gòu)之Hystrix斷路器

    本篇文章主要介紹了詳解SpringCloud微服務(wù)架構(gòu)之Hystrix斷路器,Hystrix是一個(gè)庫(kù),通過(guò)添加延遲容差和容錯(cuò)邏輯來(lái)幫助您控制這些分布式服務(wù)之間的交互,有興趣的可以了解一下
    2018-01-01
  • Spring遠(yuǎn)程調(diào)用HttpClient/RestTemplate的方法

    Spring遠(yuǎn)程調(diào)用HttpClient/RestTemplate的方法

    這篇文章主要介紹了Spring遠(yuǎn)程調(diào)用HttpClient/RestTemplate的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Java實(shí)現(xiàn)驗(yàn)證碼驗(yàn)證功能

    Java實(shí)現(xiàn)驗(yàn)證碼驗(yàn)證功能

    Java如何實(shí)現(xiàn)驗(yàn)證碼驗(yàn)證功能呢?日常生活中,驗(yàn)證碼隨處可見(jiàn),他可以在一定程度上保護(hù)賬號(hào)安全,那么他是怎么實(shí)現(xiàn)的呢?今天通過(guò)本文給大家實(shí)例詳解,需要的朋友參考下
    2017-02-02
  • java String類常用方法練習(xí)小結(jié)

    java String類常用方法練習(xí)小結(jié)

    本文主要介紹了java String類常用方法的例子,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02
  • IDEA 如何控制編輯左側(cè)的功能圖標(biāo)ICON(操作步驟)

    IDEA 如何控制編輯左側(cè)的功能圖標(biāo)ICON(操作步驟)

    很多朋友被idea左側(cè)的圖標(biāo)不見(jiàn)了這一問(wèn)題搞的焦頭爛額,不知道該怎么操作,今天小編就交大家如何控制編輯左側(cè)的功能圖標(biāo) ICON,文字內(nèi)容不多,主要通過(guò)兩張截圖給大家說(shuō)明,感興趣的朋友一起看看吧
    2021-05-05
  • Java中@Async異步失效的9種場(chǎng)景

    Java中@Async異步失效的9種場(chǎng)景

    最近在項(xiàng)目某個(gè)方法使用@Async注解,但是該方法還是同步執(zhí)行了,異步不起作用,到底是什么原因呢?接下來(lái)本文給大家介紹了Java?@Async異步失效的9種場(chǎng)景,需要的朋友可以參考下
    2024-05-05

最新評(píng)論

五台县| 南雄市| 乌拉特前旗| 汶川县| 宁城县| 香河县| 郓城县| 江永县| 白玉县| 共和县| 渭南市| 徐水县| 抚宁县| 富蕴县| 囊谦县| 贵德县| 衡东县| 淅川县| 漳平市| 仪征市| 介休市| 乐亭县| 神农架林区| 宁远县| 苍山县| 如东县| 中西区| 平南县| 当涂县| 阿瓦提县| 灵武市| 金门县| 林西县| 青岛市| 永昌县| 汨罗市| 静宁县| 清流县| 台东县| 托克托县| 永靖县|