MessageDigestSpi
MessageDigestSpi (메시지 다이제스트 SPI)
MessageDigest 클래스의 Service Provider Interface(SPI)를 정의하는 클래스입니다. MD5나 SHA 같은 특정 메시지 다이제스트 알고리즘 구현을 제공하려는 암호화 서비스 프로바이더는 이 클래스의 모든 추상 메서드를 구현해야 합니다.
본문
MessageDigestSpi는 메시지 다이제스트 알고리즘의 내부 엔진(engine) 역할을 수행하며, 실제 MessageDigest 객체의 공개 메서드가 이 SPI의 engine* 메서드들을 호출합니다. 메시지 다이제스트는 임의 크기의 데이터를 받아 고정 길이 해시 값을 내는 단방향 해시 함수입니다.
SPI가 정의하는 주요 메서드는 다음과 같습니다.
protected int engineGetDigestLength()— 다이제스트의 바이트 길이를 반환합니다. 기본 구현은 0을 반환하며 프로바이더가 오버라이드할 수 있습니다.protected abstract void engineUpdate(byte input)— 지정된 바이트로 다이제스트를 갱신합니다.protected abstract void engineUpdate(byte[] input, int offset, int len)— 지정된 바이트 배열의 일부로 다이제스트를 갱신합니다.protected void engineUpdate(ByteBuffer input)— 지정된ByteBuffer로 다이제스트를 갱신합니다.protected abstract byte[] engineDigest()— 패딩 같은 마지막 연산을 수행해 해시 계산을 완료합니다. 호출된 뒤에는 엔진을 재설정해야 합니다.protected int engineDigest(byte[] buf, int offset, int len)— 해시 계산을 완료하고buf에 저장합니다.len이 실제 다이제스트 길이보다 작으면DigestException을 던집니다.protected abstract void engineReset()— 다이제스트를 재사용할 수 있도록 재설정합니다.public Object clone()— 구현이 복제 가능하면 복제본을 반환하며, 그렇지 않으면CloneNotSupportedException을 던집니다.
구현은 Cloneable을 자유롭게 구현할 수 있습니다.