이번 포스팅은 System.arraycopy 사용방법에 대하여 알아보도록 하겠습니다.
System.arraycopy 는 byte[] 형태의 데이터를 자르거나 연접하기 위해 사용하는 메소드 입니다.
System.arraycopy 파라미터는 총 5개 요소가 들어갑니다.
System.arraycopy (src, srcPos, dest, destPos, length)
Object src : 복사하고자 하는 소스입니다.
원본이라고 생각하면 됩니다.
int srcPos : 위의 원본 소스에서 어느 부분부터 읽어올지 위치를 정해줍니다.
처음부터 데이터를 읽어올거면 0 을 넣어줍니다.
Object dest : 복사할 소스입니다.
복사하려는 대상입니다.
int destPos : 위의 복사본에서 자료를 받을 때, 어느 부분부터 쓸 것인지 시작 위치를 정해줍니다.
처음부터 데이터를 쓸 거면 0 을 넣어줍니다.
int length : 원본에서 복사본으로 데이터를 읽어서 쓸 데이터 길이입니다.
원본에서 복사본까지 얼마큼 읽어 올지 입력하는 것입니다.
다음은 실제 byte[] 형태의 데이터를 연접한 소스코드를 통해 좀 더 알아보도록 하겠습니다.
대칭키를 통해 16 byte key와 16 byte iv를 만드는 소스코드 예제입니다.
// 32 byte Key (원본)
byte[] secretKey = 32 byte byte[]
// 16 byte Key (첫번째 복사할 대상)
byte[] key = new byte[16];
// 16 byte IV (두번째 복사할 대상)
byte[] iv = new byte[16];
// key.length(16 byte) 만큼 원본 데이터를 읽어온 후 key 라는 변수에 씁니다.
System.arraycopy(secretKey, 0, key, 0, key.length);
// iv.length(16 byte) 만큼 원본 데이터를 읽어온 후 iv 라는 변수에 씁니다.
System.arraycopy(secretKey, key.length, iv, 0, iv.length);
위의 작업으로 인해 32 byte 원본 데이터의
배열 index 0~15 까지 데이터를 key 라는 변수에 저장이 되고
배열 index 16~31 까지 데이터를 iv 라는 변수에 저장이 됩니다.
'Development > Java' 카테고리의 다른 글
[Java] Java Class 파일 DeCompile (0) | 2020.04.08 |
---|---|
[Java] StringBuffer vs StringBuilder (0) | 2019.09.26 |
[Java] Handler 정리 (0) | 2019.09.05 |