I have a String String x = "Sample text";
and I want to print the base64 encryption of it. As numerous examples mention, I use:
byte[] encodedBytes = Base64.encodeBase64(x.getBytes());
System.out.println("encodedBytes " + new String(encodedBytes));
But this gives me The method encodeBase64(byte[]) is undefined for the type Base64
... Why is that?
Base 64 is an encoding scheme that converts binary data into text format so that encoded textual data can be easily transported over network un-corrupted and without any data loss. (Base 64 format reference).
In base64 encoding, the character set is [A-Z, a-z, 0-9, and + /] . If the rest length is less than 4, the string is padded with '=' characters. ^([A-Za-z0-9+/]{4})* means the string starts with 0 or more base64 groups.
public class Base64 extends Object. This class consists exclusively of static methods for obtaining encoders and decoders for the Base64 encoding scheme. The implementation of this class supports the following types of Base64 as specified in RFC 4648 and RFC 2045.
Java provides a class Base64 to deal with encryption. You can encrypt and decrypt your data by using provided methods. You need to import java. util. Base64 in your source file to use its methods.
The encode
method is in the Base64.Encoder
class that you can get by running Base64.getEncoder()
.
byte[] encodedBytes = Base64.getEncoder().encode(x.getBytes());
Similarly, to decode:
String originalString = new String(Base64.getDecoder().decode(encodedBytes));
Check out the Base64
javadocs for more info.
Instead of rewriting the code you should simply include the Apache commons codec module into your classpath. This has the exact method signature, Base64.encodeBase64(byte[])
. And yes, just hitting "encodeBase64" in an internet search should be enough.
Note that your project may use other functionality from that same codecs package. So you should always first try and find the modules / libraries used by a project before you start replacing the code. And sometimes there are subtle differences between implementations, which could make the project fail in the right circumstances.
That said, the code in the question does of course not make sense. You could use encodeBase64String
to directly convert to String
without having to convert to bytes and then to String
. And for newer level API's there is indeed the java.util.Base64
class, as mentioned in the other answer. Finally - and more importantly - if x
already contains a string, why would you base 64 encode it?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With