溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在java中使用Base64加密解密文件

發(fā)布時(shí)間:2021-04-20 16:47:05 來源:億速云 閱讀:1238 作者:Leah 欄目:編程語言

怎么在java中使用Base64加密解密文件?相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

Java的特點(diǎn)有哪些

Java的特點(diǎn)有哪些 1.Java語言作為靜態(tài)面向?qū)ο缶幊陶Z言的代表,實(shí)現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。 2.Java具有簡單性、面向?qū)ο蟆⒎植际?、安全性、平臺獨(dú)立與可移植性、動態(tài)性等特點(diǎn)。 3.使用Java可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。

具體內(nèi)容如下

package test.base64;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* 服務(wù)器之間傳遞圖片
*/
public class TestCase {
 
public static void main(String[] args) {
// 將圖片文件轉(zhuǎn)化為字節(jié)數(shù)組字符串,并對其進(jìn)行Base64編碼處理
String strImg = GetImageStr();
System.out.println(strImg);
// 對字節(jié)數(shù)組字符串進(jìn)行Base64解碼并生成圖片
GenerateImage(strImg);
}
public static String GetImageStr() {
String imgFile = "d:\\java.pdf";// 待處理的圖片
InputStream in = null;
byte[] data = null;
// 讀取圖片字節(jié)數(shù)組
try {
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
// 對字節(jié)數(shù)組Base64編碼
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(data);// 返回Base64編碼過的字節(jié)數(shù)組字符串
}
public static boolean GenerateImage(String imgStr) {
if (imgStr == null){ // 圖像數(shù)據(jù)為空
return false;
}
BASE64Decoder decoder = new BASE64Decoder();
try {
// Base64解碼
byte[] b = decoder.decodeBuffer(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 調(diào)整異常數(shù)據(jù)
b[i] += 256;
}
}
// 生成jpg圖片
String imgFilePath = "d:\\new.pdf"; // 新生成的圖片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
} catch (Exception e) {
return false;
}
}
}

小編另分享一段java代碼實(shí)現(xiàn)對文件的base64加密解密

Base64編碼方法:將每三個8bit的字節(jié)轉(zhuǎn)換為四個6bit的字節(jié),其中,轉(zhuǎn)換之后的這四個字節(jié)中每6個有效Bbit為有效數(shù)據(jù),空余的那2個用0補(bǔ)上成為一個字節(jié),java中可直接調(diào)用算法進(jìn)行base64加密解密。

public class base64 {

  public static void main(String[] args){
    File file = new File("D:\\base64.txt");
    String result = getFromBase64(file2String(file));
    System.out.println(result);
  }

  //文件轉(zhuǎn)字符串
  public static String file2String(File file){
    try {
      BufferedReader buffer = new BufferedReader(new FileReader(file));
      StringBuilder sb = new StringBuilder();
      String temp;
      while((temp = buffer.readLine()) !=null ){
        sb.append(temp);

      }
      return sb.toString();
    } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return null;
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
      return null;
    }
  }
  //加密
  public static String getBase64(String str){
    byte[] b = null;
    String s = null;
    try {
      b = str.getBytes("utf-8");
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
    if( b != null){
       s = new BASE64Encoder().encode(b);
    }
    return s;

  }

  //解密
  public static String getFromBase64(String str){
    byte[] b = null;
    String result = null;
    if(str != null){
       BASE64Decoder decoder = new BASE64Decoder(); 
       try { 
          b = decoder.decodeBuffer(str); 
          result = new String(b, "utf-8"); 
        } catch (Exception e) { 
          e.printStackTrace(); 
        } 
    }
    return result;
  }

}

看完上述內(nèi)容,你們掌握怎么在java中使用Base64加密解密文件的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI