2016-04-12 26 views
6

Próbowałem rozwiązać ten problem, ale nigdy nie znalazłem rozwiązania, które byłoby dla mnie skuteczne. Problem polega na tym, że otrzymuję ostrzeżenia dotyczące BASE64Encoder. Czy jest jakiś inny sposób, aby to zrobić bez BASE64Encoder?BASE64Encoder jest wewnętrznym interfejsem API i może zostać usunięty w przyszłym wydaniu

Kod:

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; 
} 

Odpowiedz

4

Teraz powinno być przy użyciu klas Base64 kodera i dekodera (z Java 8 r).

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()); 
     } 
    } 
} 

Kod wzięty z HERE.