欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

本文實例講述了Java實現(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進行加密
   * @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 {
        // 打開一個隨機訪問文件流,按讀寫方式
        RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
        // 文件長度,字節(jié)數(shù)
        long fileLength = randomFile.length();
        //將寫文件指針移到文件尾。
        randomFile.seek(fileLength);
        randomFile.writeBytes(content);
        randomFile.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
   }
   /**
   * 解密
   * @param fileUrl 源文件
   * @param tempUrl 臨時文件
   * @param ketLength 密碼長度
   * @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 {
        // 打開一個隨機訪問文件流,按讀寫方式
        RandomAccessFile randomFile = new RandomAccessFile(fileName, "r");
        // 文件長度,字節(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ù)學運算技巧總結(jié)》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java字符與字符串操作技巧總結(jié)》、《java日期與時間操作技巧匯總》、《Java操作DOM節(jié)點技巧總結(jié)》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設計有所幫助。

相關(guān)文章

  • springboot啟動后和停止前執(zhí)行方法示例詳解

    springboot啟動后和停止前執(zhí)行方法示例詳解

    這篇文章主要介紹了springboot啟動后和停止前執(zhí)行方法,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • Mybatis批量提交實現(xiàn)步驟詳解

    Mybatis批量提交實現(xiàn)步驟詳解

    這篇文章主要介紹了Mybatis批量提交實現(xiàn)步驟詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • 圖解JVM垃圾內(nèi)存回收算法

    圖解JVM垃圾內(nèi)存回收算法

    這篇文章主要介紹了圖解JVM垃圾內(nèi)存回收算法,由于年輕代堆空間的垃圾回收會很頻繁,因此其垃圾回收算法會更加重視回收效率,下面小編就和大家來一起學習一下吧
    2019-06-06
  • Java連接 JDBC基礎知識(操作數(shù)據(jù)庫:增刪改查)

    Java連接 JDBC基礎知識(操作數(shù)據(jù)庫:增刪改查)

    這篇文章主要介紹了Java連接 JDBC基礎知識,包括操作數(shù)據(jù)庫之增刪改查操作,需要的朋友可以參考下
    2021-04-04
  • 詳解Java中的日期類

    詳解Java中的日期類

    這篇文章主要介紹了Java中的日期類的相關(guān)資料,幫助大家更好的利用Java處理時間,感興趣的朋友可以了解下
    2020-10-10
  • java的繼承原理與實現(xiàn)方法詳解

    java的繼承原理與實現(xiàn)方法詳解

    這篇文章主要介紹了java的繼承原理與實現(xiàn)方法,結(jié)合實例形式詳細分析了Java繼承的概念、原理、用法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-05-05
  • java中利用棧實現(xiàn)字符串回文算法

    java中利用棧實現(xiàn)字符串回文算法

    給定一個由多個a和b組成的字符串數(shù)組,字符串中有一個特殊的字符X,位于字符串的正中間,例如(aaaabbbbXabaabbbb),如何判定該字符串是否回文
    2020-12-12
  • Java 輸入多行字符串或者多個int數(shù)值的方法

    Java 輸入多行字符串或者多個int數(shù)值的方法

    今天小編就為大家分享一篇Java 輸入多行字符串或者多個int數(shù)值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Spring Security動態(tài)權(quán)限的實現(xiàn)方法詳解

    Spring Security動態(tài)權(quán)限的實現(xiàn)方法詳解

    這篇文章主要和小伙伴們簡單介紹下 Spring Security 中的動態(tài)權(quán)限方案,以便于小伙伴們更好的理解 TienChin 項目中的權(quán)限方案,感興趣的可以了解一下
    2022-06-06
  • IDEA無法使用Git?Pull的問題

    IDEA無法使用Git?Pull的問題

    本文主要介紹了IDEA無法使用Git?Pull的問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02

最新評論