Convert string encoded as byte array into character array without using java.lang.String

Viewed 38

I have a byte array which contains a string encoded with some character set, which is some sensitive data (like password). I would like to convert it into character array, but without using String (i.e. NOT something like (new String(bytes, charset)).toCharArray()), because this is sensitive data. Is it possible? i.e. I would like to have something like:

public static char[] convertByteArrayToCharArray(byte[] data, Charset charset) {
....
}
1 Answers

Found a way:

public static char[] convertByteArrayToCharArray(byte[] data, Charset charset) {
    return charset.decode(ByteBuffer.wrap(data));
}

More strict version:

public static char[] convertByteArrayToCharArray(byte[] data, Charset charset) {
    charset.newDecoder()
       .onMalformedInput(CodingErrorAction.REPORT)
       .onUnmappableCharacter(CodingErrorAction.REPORT)
       .decode(data); 
}
Related