Encoding as Base64 in Java

前端 未结 17 2522
失恋的感觉
失恋的感觉 2020-11-21 13:44

I need to encode some data in the Base64 encoding in Java. How do I do that? What is the name of the class that provides a Base64 encoder?


I tried to use the <

17条回答
  •  臣服心动
    2020-11-21 14:04

    You need to change the import of your class:

    import org.apache.commons.codec.binary.Base64;
    

    And then change your class to use the Base64 class.

    Here's some example code:

    byte[] encodedBytes = Base64.encodeBase64("Test".getBytes());
    System.out.println("encodedBytes " + new String(encodedBytes));
    byte[] decodedBytes = Base64.decodeBase64(encodedBytes);
    System.out.println("decodedBytes " + new String(decodedBytes));
    

    Then read why you shouldn't use sun.* packages.


    Update (2016-12-16)

    You can now use java.util.Base64 with Java 8. First, import it as you normally do:

    import java.util.Base64;
    

    Then use the Base64 static methods as follows:

    byte[] encodedBytes = Base64.getEncoder().encode("Test".getBytes());
    System.out.println("encodedBytes " + new String(encodedBytes));
    byte[] decodedBytes = Base64.getDecoder().decode(encodedBytes);
    System.out.println("decodedBytes " + new String(decodedBytes));
    

    If you directly want to encode string and get the result as encoded string, you can use this:

    String encodeBytes = Base64.getEncoder().encodeToString((userName + ":" + password).getBytes());
    

    See Java documentation for Base64 for more.

提交回复
热议问题