ivan.ukr
ivan.ukr

Reputation: 3551

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

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) {
....
}

Upvotes: 2

Views: 112

Answers (1)

ivan.ukr
ivan.ukr

Reputation: 3551

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); 
}

Upvotes: 2

Related Questions