【问题标题】:Convert string encoded as byte array into character array without using java.lang.String将编码为字节数组的字符串转换为字符数组而不使用 java.lang.String
【发布时间】:2021-04-11 19:26:41
【问题描述】:
我有一个字节数组,其中包含一个用某些字符集编码的字符串,这是一些敏感数据(如密码)。我想将其转换为字符数组,但不使用String(即不是(new String(bytes, charset)).toCharArray()之类的东西),因为这是敏感数据。是否可以?即我想要类似的东西:
public static char[] convertByteArrayToCharArray(byte[] data, Charset charset) {
....
}
【问题讨论】:
标签:
java
arrays
string
character-encoding
【解决方案1】:
找到了一条路:
public static char[] convertByteArrayToCharArray(byte[] data, Charset charset) {
return charset.decode(ByteBuffer.wrap(data));
}
更严格的版本:
public static char[] convertByteArrayToCharArray(byte[] data, Charset charset) {
charset.newDecoder()
.onMalformedInput(CodingErrorAction.REPORT)
.onUnmappableCharacter(CodingErrorAction.REPORT)
.decode(data);
}