2013-04-16 13 views
7

Mam następujący kod sun.misc.BASE64Encoder:Jak przekonwertować sun.misc.BASE64Encoder do org.apache.commons.codec.binary.Base64

BASE64Decoder decoder = new BASE64Decoder(); 
byte[] saltArray = decoder.decodeBuffer(saltD); 
byte[] ciphertextArray = decoder.decodeBuffer(ciphertext); 

i chciałby, aby przekształcić go org.apache.commons.codec.binary.Base64. Przejrzałem interfejsy API, dokumenty itd., Ale nie mogę znaleźć czegoś, co wydaje się pasować i dawać takie same wartości wynikowe.

Odpowiedz

11

To rzeczywiście niemal dokładnie to samo:

Base64 decoder = new Base64(); 
byte[] saltArray = decoder.decode(saltD); 
byte[] ciphertextArray = decoder.decode(ciphertext); 

do dekodowania:

String saltString = encoder.encodeToString(salt); 
String ciphertextString = encoder.encodeToString(ciphertext); 

Ten ostatni był trudniejszy, ponieważ używasz "toStri" ng "na końcu.

+1

Dlaczego otrzymuję 'Metoda encodeToString (byte []) jest niezdefiniowana dla typu Base64'? – Danijel

+0

Ta metoda jest dostępna tylko zaczynając od commons-codec-1.4 – fabdouglas

6

Można użyć metod decodeBase64(byte[] base64Data) lub decodeBase64(String base64String). Na przykład:

byte[] result = Base64.decodeBase64(base64); 

Oto krótki przykład:

import java.io.IOException; 
import org.apache.commons.codec.binary.Base64; 
import sun.misc.BASE64Encoder; 
import sun.misc.BASE64Decoder; 

public class TestCodec { 

    public static void main(String[] args) throws IOException { 
     String test = "Test BASE64Encoder vs Base64"; 

//  String encoded = new BASE64Encoder().encode(test.getBytes("UTF-8")); 
//  byte[] result = new BASE64Decoder().decodeBuffer(encoded); 

     byte[] encoded = Base64.encodeBase64(test.getBytes("UTF-8")); 
     byte[] result = Base64.decodeBase64(encoded); 

     System.out.println(new String(result, "UTF-8")); 
    } 
} 
+0

A co z solą? Jest to kluczowa część, której nie mogę uzyskać. –

+0

@StephaneGrenier to 'saltD' a String? Co nie działa? – tenorsax

2

Zamiast tych dwóch klas (import sun.misc.BASE64Encoder; import sun.misc.BASE64Decoder), można użyć java.util.Base64 class.Now kodowanie zmian i sposobu dekodowania jak poniżej. kodowania:

String ciphertextString = Base64.getEncoder().encodeToString(ciphertext); 

celu dekodowania:

final byte[] encryptedByteArray = Base64.getDecoder().decode(ciphertext); 

tutaj zaszyfrowany jest zakodowana hasło w metodzie kodowania.

Teraz wszystko jest zrobione, można zapisać swój program i uruchomić. Będzie działał bez żadnego błędu.

Powiązane problemy