Я бы предложил что-то вроде этого:
public static String encrypt(String Data) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
Key key = generateKey();
Cipher c = Cipher.getInstance(ALGO);
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encVal = c.doFinal(Data.getBytes());
// simply store the encoded byte array here
byte[] bytes = Base64.getEncoder().encode(encVal);
// loop over the bytes and append each byte as hex string
StringBuilder sb = new StringBuilder(bytes.length * 2);
for(byte b : bytes)
sb.append(String.format("%02x", b));
return sb.toString();
}
В исходном коде вы уже преобразовали байты из кодировки Base64 обратно в строку, используя набор символов по умолчанию, что, вероятно, не то, что вам нужно.