Bir dizeyi base64
olarak kodlamak ve bir soket üzerinden aktarmak ve geri çözmek istiyorum.
Ancak kod çözüldükten sonra farklı bir cevap verir.
Kodum aşağıdaki gibidir ve sonuç "77+9x6s="
import javax.xml.bind.DatatypeConverter;
public class f{
public static void main(String a[]){
String str = new String(DatatypeConverter.parseBase64Binary("user:123"));
String res = DatatypeConverter.printBase64Binary(str.getBytes());
System.out.println(res);
}
}
Bunun nasıl uygulanacağı hakkında bir fikriniz var mı?
Aşağıdaki yaklaşımı kullanabilirsiniz:
import org.apache.commons.codec.binary.Base64;
// Encode data on your side using BASE64
byte[] bytesEncoded = Base64.encodeBase64(str.getBytes());
System.out.println("encoded value is " + new String(bytesEncoded));
// Decode data on other side, by processing encoded data
byte[] valueDecoded = Base64.decodeBase64(bytesEncoded);
System.out.println("Decoded value is " + new String(valueDecoded));
Umarım bu şüphelerinizi yanıtlar.
Spring Kullanıcıları için Spring Security, org.springframework.security.crypto.codec
paketinde Base64'ün kodlanması ve kodunun çözülmesi için de kullanılabilen bir Base64 sınıfına sahiptir.
Örn.
public static String base64Encode(String token) {
byte[] encodedBytes = Base64.encode(token.getBytes());
return new String(encodedBytes, Charset.forName("UTF-8"));
}
public static String base64Decode(String token) {
byte[] decodedBytes = Base64.decode(token.getBytes());
return new String(decodedBytes, Charset.forName("UTF-8"));
}
Aşağıdaki iyi bir çözümdür -
import android.util.Base64;
String converted = Base64.encodeToString(toConvert.toString().getBytes(), Base64.DEFAULT);
String stringFromBase = new String(Base64.decode(converted, Base64.DEFAULT));
Bu kadar. Tek bir satır kodlama ve kod çözme.