Reputation: 3551
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
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