熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

Java文件加解密

2013-11-23 19:30:05  來源: Java核心技術 

  做網站有時會處理一些上傳下載的文件可能會用到加解密功能以下是一個加解密方法

  Java代碼

  import javaioFile;

  import javaioFileInputStream;

  import javaioFileOutputStream;

  import javaioIOException;

  import nfConf;

  import montimeTimeHandler;

  /**

  * 加解密單元

  * @author lupingui

  * ::

  */

  public class EncryptDecrypt {

  //加解密KEY這個不能變動這裡可以由任意的字符組成盡量用特殊字符

  static final byte[] KEYVALUE = getBytes();

  //讀取字節的長度

  static final int BUFFERLEN = ;

  //加密臨時存儲目錄

  static final String TRANSIT_DIR_ENC = ;

  //解密臨時存儲目錄

  static final String TRANSIT_DIR_DEC = ;

  /**

  * 文件加密

  * @param oldFile待加密文件

  * @param saveFileName加密後文件保存路徑

  * @return

  * @throws IOException

  */

  public static boolean encryptFile(File oldFile String saveFileName) throws IOException{

  //如果傳入的文件不存在或者不是文件則直接返回

  if (!oldFileexists() || !oldFileisFile()){

  return false;

  }

  FileInputStream in = new FileInputStream(oldFile);

  //加密後存儲的文件

  File file = new File(saveFileName);

  if (!fileexists()){

  return false;

  }

  //讀取待加密文件加密後寫入加密存儲文件中

  FileOutputStream out = new FileOutputStream(file);

  int c pos keylen;

  pos = ;

  keylen = KEYVALUElength;

  byte buffer[] = new byte[BUFFERLEN];

  while ((c = inread(buffer)) != ) {

  for (int i = ; i < c; i++) {

  buffer[i] ^= KEYVALUE[pos];

  outwrite(buffer[i]);

  pos++;

  if (pos == keylen){

  pos = ;

  }

  }

  }

  inclose();

  outclose();

  return true;

  }

  /**

  * 文件加密

  * @param oldFile:待加密文件

  * @param saveFile加密後的文件

  * @return

  * @throws IOException

  */

  public static boolean encryptFile(File oldFile File saveFile) throws IOException{

  //如果傳入的文件不存在或者不是文件則直接返回

  if (!oldFileexists() || !oldFileisFile() || !saveFileexists() || !saveFileisFile()){

  return false;

  }

  FileInputStream in = new FileInputStream(oldFile);

  //讀取待加密文件加密後寫入加密存儲文件中

  FileOutputStream out = new FileOutputStream(saveFile);

  int c pos keylen;

  pos = ;

  keylen = KEYVALUElength;

  byte buffer[] = new byte[BUFFERLEN];

  while ((c = inread(buffer)) != ) {

  for (int i = ; i < c; i++) {

  buffer[i] ^= KEYVALUE[pos];

  outwrite(buffer[i]);

  pos++;

  if (pos == keylen){

  pos = ;

  }

  }

  }

  inclose();

  outclose();

  return true;

  }

  /**

  * 文件加密

  * @param oldFile待加密文件

  * @return

  * @throws IOException

  */

  public static File encryptFile(File oldFile) throws IOException{

  //如果傳入的文件不存在或者不是文件則直接返回

  if (!oldFileexists() || !oldFileisFile()){

  return null;

  }

  FileInputStream in = new FileInputStream(oldFile);

  //臨時加密文件存儲目錄

  File dirFile = new File(TRANSIT_DIR_ENC);

  //如果臨時存儲目錄不存在或不是目錄則直接返回

  if (!dirFileexists() || !dirFileisDirectory()){

  return null;

  }

  //加密後存儲的文件

  File file = new File(dirFileenc_ + TimeHandlergetInstance()getTimeInMillis() + _ + oldFilegetName());

  if (!fileexists()){

  filecreateNewFile();

  }

  //讀取待加密文件加密後寫入加密存儲文件中

  FileOutputStream out = new FileOutputStream(file);

  int c pos keylen;

  pos = ;

  keylen = KEYVALUElength;

  byte buffer[] = new byte[BUFFERLEN];

  while ((c = inread(buffer)) != ) {

  for (int i = ; i < c; i++) {

  buffer[i] ^= KEYVALUE[pos];

  outwrite(buffer[i]);

  pos++;

  if (pos == keylen){

  pos = ;

  }

  }

  }

  inclose();

  outclose();

  //返回加密後的文件

  return file;

  }

  /**

  * 文件加密

  * @param oldFileName待加密文件路徑

  * @return

  * @throws IOException

  * @throws Exception

  */

  public static File encryptFile(String oldFileName) throws IOException {

  //如果待加密文件路徑不正確則直接返回

  if (oldFileName == null || oldFileNametrim()equals()){

  return null;

  }

  //待加密文件

  File oldFile = new File(oldFileName);

  //如果傳入的文件不存在或者不是文件則直接返回

  if (!oldFileexists() || !oldFileisFile()){

  return null;

  }

  //調用文件加密方法並返回結果

  return encryptFile(oldFile);

  }

  /**

  * 文件解密

  * @param oldFile待解密文件

  * @return

  * @throws IOException

  */

  public static File decryptFile(File oldFile) throws IOException{

  //如果待解密文件不存在或者不是文件則直接返回

  if (!oldFileexists() || !oldFileisFile()){

  return null;

  }

  FileInputStream in = new FileInputStream(oldFile);

  //臨時解密文件存儲目錄

  File dirFile = new File(TRANSIT_DIR_DEC);

  //如果臨時解密文件存儲目錄不存在或不是目錄則返回

  if (!dirFileexists() || !dirFileisDirectory()){

  return null;

  }

  //解密存儲文件

  File file = new File(dirFiledec_ + TimeHandlergetInstance()getTimeInMillis() + _ + oldFilegetName()substring(oldFilegetName()lastIndexOf()));

  if (!fileexists()){

  filecreateNewFile();

  }

  //讀取待解密文件並進行解密存儲

  FileOutputStream out = new FileOutputStream(file);

  int c pos keylen;

  pos = ;

  keylen = KEYVALUElength;

  byte buffer[] = new byte[BUFFERLEN];

  while ((c = inread(buffer)) != ) {

  for (int i = ; i < c; i++) {

  buffer[i] ^= KEYVALUE[pos];

  outwrite(buffer[i]);

  pos++;

  if (pos == keylen){

  pos = ;

  }

  }

  }

  inclose();

  outclose();

  //返回解密結果文件

  return file;

  }

  /**

  * 文件解密

  * @param oldFileName待解密文件路徑

  * @return

  * @throws Exception

  */

  public static File decryptFile(String oldFileName) throws Exception {

  //如果待解密文件路徑不正確則直接返回

  if (oldFileName == null || oldFileNametrim()equals()){

  return null;

  }

  //待解密文件

  File oldFile = new File(oldFileName);

  //如果待解密文件不存在或不是文件則直接返回

  if (!oldFileexists() || !oldFileisFile()){

  return null;

  }

  //調用文件解密方法並返回結果

  return decryptFile(oldFile);

  }

  }


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26983.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.