2016-04-12 12 views
6

Tôi đã cố gắng giải quyết vấn đề này nhưng tôi chưa bao giờ đến giải pháp có thể hoạt động đối với tôi. Vấn đề là tôi đang nhận được các cuộc chiến về BASE64Encoder. Có cách nào khác để làm điều này mà không có BASE64Encoder?BASE64Encoder là API nội bộ và có thể bị xóa trong bản phát hành tương lai

Mã:

public static String Encrypt(String Data) throws Exception 
{ 
    Key key = generateKey(); 
    Cipher c = Cipher.getInstance(ALGO); 
    c.init(Cipher.ENCRYPT_MODE, key); 
    byte[] encVal = c.doFinal(Data.getBytes()); 
    String encryptedValue = new BASE64Encoder().encode(encVal); //Here is the problem 

    return encryptedValue; 
} 

public static String Decrypt(String encryptedData) throws Exception 
{ 
    Key key = generateKey(); 
    Cipher c = Cipher.getInstance(ALGO); 
    c.init(Cipher.DECRYPT_MODE, key); 
    byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedData); //Another problem 
    byte[] decValue = c.doFinal(decordedValue); 
    String decryptedValue = new String(decValue); 

    return decryptedValue; 
} 

private static Key generateKey() throws Exception 
{ 
    Key key = new SecretKeySpec(keyValue, ALGO); 
    return key; 
} 

Trả lời

4

Bây giờ bạn nên sử dụng các lớp Base64 mã hóa và giải mã (từ Java 8 trở đi).

https://docs.oracle.com/javase/8/docs/api/java/util/Base64.html

import java.util.Base64; 
import java.util.UUID; 
import java.io.UnsupportedEncodingException; 

public class HelloWorld { 
    public static void main(final String... args) { 
     try { 
     // Encode using basic encoder 
     String base64encodedString = Base64.getEncoder().encodeToString("TutorialsPoint?java8".getBytes("utf-8")); 
     System.out.println("Base64 Encoded String (Basic) :" + base64encodedString); 

     // Decode 
     byte[] base64decodedBytes = Base64.getDecoder().decode(base64encodedString); 

     System.out.println("Original String: " + new String(base64decodedBytes, "utf-8")); 
     base64encodedString = Base64.getUrlEncoder().encodeToString("TutorialsPoint?java8".getBytes("utf-8")); 
     System.out.println("Base64 Encoded String (URL) :" + base64encodedString); 

     StringBuilder stringBuilder = new StringBuilder(); 

     for (int i = 0; i < 10; ++i) { 
      stringBuilder.append(UUID.randomUUID().toString()); 
     } 

     byte[] mimeBytes = stringBuilder.toString().getBytes("utf-8"); 
     String mimeEncodedString = Base64.getMimeEncoder().encodeToString(mimeBytes); 
     System.out.println("Base64 Encoded String (MIME) :" + mimeEncodedString); 

     } catch (UnsupportedEncodingException e) { 
     System.out.println("Error :" + e.getMessage()); 
     } 
    } 
} 

Mã lấy từ HERE.

Các vấn đề liên quan