728x90
지난번 글에서 char array에서 byte array로 변환하는 법을 대충 stack overflow에서 찾아 사용했다고 글을 썼는데, 해당 내용을 블로그에 정리한 뒤 다음에 ByteBuffer와 CharBuffer에 대해서 제대로 정리해 봐야겠다는 생각이 들었다.
char[]에서 byte[]로 변환하기
// Buffer를 사용하여 변환하기
private static byte[] toBytesUseBuffer(char[] chars) {
if (chars == null) return null;
CharBuffer charBuffer = CharBuffer.wrap(chars);
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(charBuffer);
byte[] bytes = Arrays.copyOfRange(byteBuffer.array(), byteBuffer.position(), byteBuffer.limit());
// 민감 정보 지우기
Arrays.fill(byteBuffer.array(), (byte) 0);
return bytes;
}
// Buffer를 사용하지 않고 변환하기
private static byte[] toBytesWithoutBuffer(char[] chars) {
if (chars == null) return null;
byte[] byteArray = new byte[chars.length];
for (int i = 0; i < chars.length; i++) {
byteArray[i] = (byte) chars[i];
}
return byteArray;
}
위에 있는 함수는 Buffer를 사용하여 변환하는 방법이고, 아래 있는 함수는 Buffer를 사용하지 않고 변환하는 방법이다.
Buffer를 사용할 때, 민감 정보를 다룰 경우 Arrays.fill() 또는 반복문을 사용하여 안에 있는 내용을 0으로 덮어씌워 주는 것이 좋다.
byte[]에서 char[]로 변환하기
// Buffer를 사용하여 변환하기
private static char[] toCharsUseBuffer(byte[] bytes) {
if (bytes == null) return null;
ByteBuffer byteBuffer = ByteBuffer.wrap(bytes);
CharBuffer charBuffer = StandardCharsets.UTF_8.decode(byteBuffer);
char[] chars = Arrays.copyOfRange(charBuffer.array(), charBuffer.position(), charBuffer.limit());
// 민감 정보 지우기
Arrays.fill(charBuffer.array(), '\u0000');
return chars;
}
// Buffer를 사용하지 않고 변환하기
private static char[] toCharsWithoutBuffer(byte[] bytes) {
if (bytes == null) return null;
char[] chars = new char[bytes.length];
for (int i = 0; i < bytes.length; i++) {
chars[i] = (char) bytes[i];
}
return chars;
}
위에 있는 함수는 Buffer를 사용하여 변환하는 방법이고, 아래 있는 함수는 Buffer를 사용하지 않고 변환하는 방법이다.
Buffer를 사용할 때, 민감 정보를 다룰 경우 Arrays.fill() 또는 반복문을 사용하여 안에 있는 내용을 0으로 덮어씌워 주는 것이 좋다.
다음번에 ByteBuffer와 CharBuffer 그리고 nio에 대해서 공부한 뒤 포스팅을 남겨야겠다.
Reference
728x90
'Java' 카테고리의 다른 글
[Java] Boolean.valueOf()와 Boolean.parseBoolean()의 차이 (0) | 2022.07.20 |
---|---|
[Java] Java 코드 실행시간 측정하기 (0) | 2021.11.12 |
[Java] Maven 라이브러리 Dependency 충돌 해결하기 (0) | 2021.11.04 |
[Java] 메서드 참조(Method Reference) (0) | 2021.05.21 |
[Java] javadoc 정리 (0) | 2021.05.04 |