Base64 Java bir dizeyi kodlar ve kodunu çözer

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ı?

Çözü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.

Yorumlar (8)

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

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.

Yorumlar (1)