[java] Apache Commons Codec를 이용한 CRC-32 체크섬 계산 예제

CRC-32는 데이터 무결성을 검증하기 위해 사용되는 체크섬 알고리즘 중 하나입니다. 이 알고리즘은 데이터의 일관성을 확인하기 위해 간단한 체크섬을 생성합니다. 이번 예제에서는 Apache Commons Codec 라이브러리를 사용하여 CRC-32 체크섬을 계산하는 방법을 알아보겠습니다.

Apache Commons Codec 설치하기

먼저, Apache Commons Codec 라이브러리를 다운로드하여 프로젝트에 추가해야 합니다. Maven을 사용하는 경우 pom.xml 파일에 다음 의존성을 추가합니다.

<dependencies>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.15</version>
    </dependency>
</dependencies>

Gradle을 사용하는 경우 build.gradle 파일에 다음 의존성을 추가합니다.

dependencies {
    implementation 'commons-codec:commons-codec:1.15'
}

CRC-32 체크섬 계산하기

import org.apache.commons.codec.digest.CRC32;
import org.apache.commons.codec.digest.DigestUtils;

public class Crc32Example {

    public static void main(String[] args) {
        // 체크섬을 계산할 데이터
        String data = "Hello, World!";
        
        // CRC32 객체 생성
        CRC32 crc32 = new CRC32();
        
        // 데이터를 바이트 배열로 변환하여 체크섬 계산
        crc32.update(data.getBytes());
        
        // CRC-32 체크섬 값 가져오기
        long checksum = crc32.getValue();
        
        System.out.println("CRC-32 체크섬: " + checksum);
        
        // Apache Commons Codec의 DigestUtils를 사용하여도 동일한 결과를 얻을 수 있습니다.
        String checksum2 = DigestUtils.crc32Hex(data.getBytes());
        
        System.out.println("CRC-32 체크섬 (16진수): " + checksum2);
    }
}

위의 예제는 주어진 데이터의 CRC-32 체크섬을 계산하는 방법을 보여줍니다. 데이터는 Hello, World!로 설정되어 있고, 해당 데이터의 체크섬 값을 계산하고 출력합니다. 또한, 위의 예제에서는 Apache Commons Codec의 DigestUtils 클래스를 사용하여도 동일한 결과를 얻을 수 있다는 것을 보여줍니다.

이제 위의 예제를 실행하면 CRC-32 체크섬 값과 16진수 형태로 표시된 체크섬 값을 확인할 수 있습니다.

참고 자료