반응형
Base64 Java 인코딩 및 문자열 디코딩
문자열을 인코딩하고 싶다.base64
소켓을 통해 전송한 후 다시 해독합니다.
하지만 복호화 후에는 다른 답을 얻을 수 있습니다.
다음은 제 코드이고 결과는 "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);
}
}
어떻게 구현해야 하는지 아세요?
다음의 어프로치를 사용할 수 있습니다.
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));
이게 당신의 의구심을 풀어주길 바랍니다.
Java 8은 BASE64 인코딩 및 디코딩을 지원합니다.사용할 수 있는 클래스는 다음과 같습니다.java.util.Base64
,java.util.Base64.Encoder
그리고.java.util.Base64.Decoder
.
사용 예:
// encode with padding
String encoded = Base64.getEncoder().encodeToString(someByteArray);
// encode without padding
String encoded = Base64.getEncoder().withoutPadding().encodeToString(someByteArray);
// decode a String
byte [] barr = Base64.getDecoder().decode(encoded);
승인된 답변은 Apache Commons 패키지를 사용하지만 Java의 네이티브 라이브러리를 사용하여 이렇게 했습니다.
Java 11 이상
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
Base64.Encoder enc = Base64.getEncoder();
Base64.Decoder dec = Base64.getDecoder();
String str = "77+9x6s=";
// encode data using BASE64
String encoded = enc.encodeToString(str.getBytes());
System.out.println("encoded value is \t" + encoded);
// Decode data
String decoded = new String(dec.decode(encoded));
System.out.println("decoded value is \t" + decoded);
System.out.println("original value is \t" + str);
}
}
Java 6 - 10
import java.io.UnsupportedEncodingException;
import javax.xml.bind.DatatypeConverter;
public class EncodeString64 {
public static void main(String[] args) throws UnsupportedEncodingException {
String str = "77+9x6s=";
// encode data using BASE64
String encoded = DatatypeConverter.printBase64Binary(str.getBytes());
System.out.println("encoded value is \t" + encoded);
// Decode data
String decoded = new String(DatatypeConverter.parseBase64Binary(encoded));
System.out.println("decoded value is \t" + decoded);
System.out.println("original value is \t" + str);
}
}
하는 것이 더 나을 것이다try/catch
부호화/비활성화 단계입니다만, 이해하셨으면 합니다.
Spring Users의 경우 Spring Security는 Base64 클래스가 있습니다.org.springframework.security.crypto.codec
Base64의 부호화 및 복호화에도 사용할 수 있는 패키지입니다.예.
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"));
}
다음은 좋은 해결책입니다.
import android.util.Base64;
String converted = Base64.encodeToString(toConvert.toString().getBytes(), Base64.DEFAULT);
String stringFromBase = new String(Base64.decode(converted, Base64.DEFAULT));
바로 그겁니다.단일 회선 부호화 및 복호화
import javax.xml.bind.DatatypeConverter;
public class f{
public static void main(String a[]){
String str = new String(DatatypeConverter.printBase64Binary(new String("user:123").getBytes()));
String res = DatatypeConverter.parseBase64Binary(str);
System.out.println(res);
}
}
언급URL : https://stackoverflow.com/questions/19743851/base64-java-encode-and-decode-a-string
반응형
'programing' 카테고리의 다른 글
vue.material에서의 vue.modial2 라우팅 (0) | 2022.08.11 |
---|---|
메모리가 정렬되어 있는지 확인하는 방법 (0) | 2022.08.11 |
이중이 정수인지 검사하는 방법 (0) | 2022.08.11 |
어레이가 늘인지 비어 있는지 확인하려면 어떻게 해야 합니까? (0) | 2022.08.11 |
자바에서 지연하려면 어떻게 해야 하나요? (0) | 2022.07.18 |