반응형

이번 포스팅은 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

+ Recent posts