JavaTM Platform
Standard Ed. 6

java.security
클래스 MessageDigest

java.lang.Object 
  상위를 확장 java.security.MessageDigestSpi 
      상위를 확장 java.security.MessageDigest


public abstract class MessageDigest
extends MessageDigestSpi

이 MessageDigest 클래스는, MD5 또는 SHA 등의 메세지 다이제스트 알고리즘의 기능을 제공합니다. 메세지 다이제스트는, 임의 사이즈의 데이터를 취득해 고정장의 해시치를 출력하는 안전한 한방향의 해시 기능입니다.

MessageDigest 객체는, 초기화되어 기동됩니다. 데이터는, MessageDigest 객체를 개입시켜 update 메소드를 사용해 처리됩니다. reset 메소드를 호출하는 것으로, 임의의 시점에서 다이제스트를 리셋 할 수 있습니다. 갱신 대상의 데이터가 모두 갱신된 시점에서,digest 메소드의 1 개를 호출하는 것으로, 해시 계산을 종료할 필요가 있습니다.

digest 메소드는, 지정 회수의 갱신에 대해서 1 회 호출하는 것만으로 끝납니다. digest 메소드의 호출이 종료한 뒤, MessageDigest 객체는 초기화 상태에 리셋 됩니다.

Cloneable 인터페이스는, 자유롭게 구현할 수 있습니다. 클라이언트 어플리케이션은, 복제의 생성을 시행해 CloneNotSupportedException 를 캐치 하면, 복제의 생성이 가능한가 어떤가를 조사할 수가 있습니다.

MessageDigest md = MessageDigest.getInstance("SHA");

try {
md.update(toChapter1);
MessageDigest tc1 = md.clone();
byte[] toChapter1Digest = tc1.digest();
md.update(toChapter2);
...등
} catch (CloneNotSupportedException cnse) {
throw new DigestException("couldn't make digest of partial content");
 }
 

사용하는 구현예가 복제 가능하지 않은 경우에서도, 다이제스트의 수를 미리 알고 있을 때는, 몇개의 인스턴스를 생성하는 것에 의해, 중간적인 다이제스트를 계산할 수 있습니다.

이 클래스는, 역사적인 사정으로부터 MessageDigest 클래스를 상속한 abstract 클래스가 되어 있습니다. 어플리케이션의 개발자는,MessageDigest 클래스에서 정의된 메소드인 만큼 배려해 주세요. 슈퍼 클래스의 모든 메소드는, 메세지 다이제스트 알고리즘의 독자적인 구현을 제공할 필요가 있는 암호 서비스 프로바이더로 사용되는 것을 상정하고 있습니다.

관련 항목:
DigestInputStream , DigestOutputStream

생성자 의 개요
protected MessageDigest (String  algorithm)
          지정된 알고리즘명을 사용해 메세지 다이제스트를 작성합니다.
 
메소드의 개요
 Object clone ()
          구현이 복제 가능한 경우는 복제를 돌려줍니다.
 byte[] digest ()
          패딩등의 최종 처리를 행해 해시 계산을 완료합니다.
 byte[] digest (byte[] input)
          지정된 바이트 배열을 사용해 다이제스트에 대해서 최종의 갱신을 실행한 뒤, 다이제스트 계산을 완료합니다.
 int digest (byte[] buf, int offset, int len)
          패딩등의 최종 처리를 행해 해시 계산을 완료합니다.
 String getAlgorithm ()
          구현의 상세하게 의존하지 않는 알고리즘을 식별하는 캐릭터 라인을 돌려줍니다.
 int getDigestLength ()
          다이제스트의 길이를 바이트로 돌려줍니다.
static MessageDigest getInstance (String  algorithm)
          지정된 다이제스트 알고리즘을 구현하는 MessageDigest 객체를 돌려줍니다.
static MessageDigest getInstance (String  algorithm, Provider  provider)
          지정된 다이제스트 알고리즘을 구현하는 MessageDigest 객체를 돌려줍니다.
static MessageDigest getInstance (String  algorithm, String  provider)
          지정된 다이제스트 알고리즘을 구현하는 MessageDigest 객체를 돌려줍니다.
 Provider getProvider ()
          이 메세지 다이제스트 객체의 프로바이더를 돌려줍니다.
static boolean isEqual (byte[] digesta, byte[] digestb)
          2 개의 다이제스트가 동일한지 어떤지를 비교합니다.
 void reset ()
          재사용을 위해서(때문에) 다이제스트를 리셋 합니다.
 String toString ()
          이 메세지 다이제스트 객체의 캐릭터 라인 표현을 돌려줍니다.
 void update (byte input)
          지정된 바이트 데이터를 사용해 다이제스트를 갱신합니다.
 void update (byte[] input)
          지정된 바이트 배열을 사용해 다이제스트를 갱신합니다.
 void update (byte[] input, int offset, int len)
          지정된 바이트 데이터의 배열을 사용해, 지정된 오프셋(offset)로부터 개시해 다이제스트를 갱신합니다.
 void update (ByteBuffer  input)
          지정된 ByteBuffer 를 사용해 다이제스트를 갱신합니다.
 
클래스 java.security. MessageDigestSpi 로부터 상속된 메소드
engineDigest , engineDigest , engineGetDigestLength , engineReset , engineUpdate , engineUpdate , engineUpdate
 
클래스 java.lang. Object 로부터 상속된 메소드
equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait
 

생성자 의 상세

MessageDigest

protected MessageDigest(String  algorithm)
지정된 알고리즘명을 사용해 메세지 다이제스트를 작성합니다.

파라미터:
algorithm - 다이제스트 알고리즘의 표준명. 알고리즘의 표준명에 대해서는,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
메소드의 상세

getInstance

public static MessageDigest  getInstance(String  algorithm)
                                 throws NoSuchAlgorithmException 
지정된 다이제스트 알고리즘을 구현하는 MessageDigest 객체를 돌려줍니다.

이 메소드는, 최우선의 Provider 로부터 순서에, 등록을 마친 시큐리티 Provider 의 리스트를 횡단(traverse) 합니다. 지정된 알고리즘을 지원하는 최초의 Provider 의 MessageDigestSpi 구현을 캡슐화하는 새로운 MessageDigest 객체가 돌려주어집니다.

등록이 끝난 프로바이더의 리스트는,Security.getProviders() 메소드 경유로 취득할 수 있습니다.

파라미터:
algorithm - 요구하는 알고리즘의 이름 알고리즘의 표준명에 대해서는,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
반환값:
지정된 알고리즘을 구현하는 Message Digest 객체
예외:
NoSuchAlgorithmException - 지정된 알고리즘의 MessageDigestSpi 구현을 지원하는 Provider 가 존재하지 않는 경우
관련 항목:
Provider

getInstance

public static MessageDigest  getInstance(String  algorithm,
                                        String  provider)
                                 throws NoSuchAlgorithmException ,
                                        NoSuchProviderException 
지정된 다이제스트 알고리즘을 구현하는 MessageDigest 객체를 돌려줍니다.

지정된 프로바이더의 MessageDigestSpi 구현을 캡슐화하는 새로운 MessageDigest 객체가 돌려주어집니다. 지정한 프로바이더는, 시큐리티 프로바이더 리스트에 등록할 필요가 있습니다.

등록이 끝난 프로바이더의 리스트는,Security.getProviders() 메소드 경유로 취득할 수 있습니다.

파라미터:
algorithm - 요구하는 알고리즘의 이름 알고리즘의 표준명에 대해서는,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
provider - 프로바이더명
반환값:
지정된 알고리즘을 구현하는 MessageDigest 객체
예외:
NoSuchAlgorithmException - 지정된 프로바이더로 지정된 알고리즘의 MessageDigestSpi 구현이 없는 경우
NoSuchProviderException - 지정된 프로바이더가 시큐리티 프로바이더 리스트에 등록되지 않은 경우
IllegalArgumentException - 프로바이더의 이름이 null 나 빈 상태(empty)의 경우
관련 항목:
Provider

getInstance

public static MessageDigest  getInstance(String  algorithm,
                                        Provider  provider)
                                 throws NoSuchAlgorithmException 
지정된 다이제스트 알고리즘을 구현하는 MessageDigest 객체를 돌려줍니다.

지정된 Provider 객체의 MessageDigestSpi 구현을 캡슐화하는 새로운 MessageDigest 객체가 돌려주어집니다. 지정된 Provider 객체는, 프로바이더 리스트에 등록할 필요는 없습니다.

파라미터:
algorithm - 요구하는 알고리즘의 이름 알고리즘의 표준명에 대해서는,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조
provider - 프로바이더
반환값:
지정된 알고리즘을 구현하는 MessageDigest 객체
예외:
NoSuchAlgorithmException - 지정된 Provider 객체로 지정된 알고리즘의 MessageDigestSpi 구현이 없는 경우
IllegalArgumentException - 지정된 프로바이더가 null 의 경우
도입된 버젼:
1.4
관련 항목:
Provider

getProvider

public final Provider  getProvider()
이 메세지 다이제스트 객체의 프로바이더를 돌려줍니다.

반환값:
이 메세지 다이제스트 객체의 프로바이더

update

public void update(byte input)
지정된 바이트 데이터를 사용해 다이제스트를 갱신합니다.

파라미터:
input - 다이제스트를 갱신하는 바이트

update

public void update(byte[] input,
                   int offset,
                   int len)
지정된 바이트 데이터의 배열을 사용해, 지정된 오프셋(offset)로부터 개시해 다이제스트를 갱신합니다.

파라미터:
input - 바이트의 배열
offset - 바이트의 배열에서의 개시 오프셋(offset)
len - 사용하는 바이트수 (offset 로부터 개시)

update

public void update(byte[] input)
지정된 바이트 배열을 사용해 다이제스트를 갱신합니다.

파라미터:
input - 바이트의 배열

update

public final void update(ByteBuffer  input)
지정된 ByteBuffer 를 사용해 다이제스트를 갱신합니다. 다이제스트의 갱신시에는,input.position() 위치로부터 시작되는 input.remaining() 바이트가 사용됩니다. 종료시에, 버퍼의 위치는 리밋트에 동일해집니다만, 리밋트는 변경되지 않습니다.

파라미터:
input - ByteBuffer
도입된 버젼:
1.5

digest

public byte[] digest()
패딩등의 최종 처리를 행해 해시 계산을 완료합니다. 이 호출뒤, 다이제스트는 리셋 됩니다.

반환값:
결과적으로 얻을 수 있는 해시치에 대한 바이트 데이터의 배열

digest

public int digest(byte[] buf,
                  int offset,
                  int len)
           throws DigestException 
패딩등의 최종 처리를 행해 해시 계산을 완료합니다. 이 호출뒤, 다이제스트는 리셋 됩니다.

파라미터:
buf - 계산 끝난 다이제스트의 출력처 버퍼
offset - 출력 버퍼에 다이제스트의 포함을 개시하는 위치를 나타내는 오프셋(offset)
len - 다이제스트를 할당하는 버퍼의 바이트수
반환값:
buf 에 포함된 바이트수
예외:
DigestException - 에러가 발생했을 경우

digest

public byte[] digest(byte[] input)
지정된 바이트 배열을 사용해 다이제스트에 대해서 최종의 갱신을 실행한 뒤, 다이제스트 계산을 완료합니다. 즉, 이 메소드는 update(input) 메소드를 호출해 input 배열을 update 메소드에 건네준 뒤,digest() 메소드를 호출합니다.

파라미터:
input - 다이제스트의 완료전에 갱신하는 대상의 입력
반환값:
결과적으로 얻을 수 있는 해시치에 대한 바이트 데이터의 배열

toString

public String  toString()
이 메세지 다이제스트 객체의 캐릭터 라인 표현을 돌려줍니다.

오버라이드(override):
클래스 Object 내의 toString
반환값:
이 객체의 캐릭터 라인 표현

isEqual

public static boolean isEqual(byte[] digesta,
                              byte[] digestb)
2 개의 다이제스트가 동일한지 어떤지를 비교합니다. 단순한 1 바이트 비교를 실행합니다.

파라미터:
digesta - 비교할 뿐의 다이제스트
digestb - 비교하는 것 외 (분)편의 다이제스트
반환값:
다이제스트가 동일한 경우는 true, 그렇지 않은 경우는 false

reset

public void reset()
재사용을 위해서(때문에) 다이제스트를 리셋 합니다.


getAlgorithm

public final String  getAlgorithm()
구현의 상세하게 의존하지 않는 알고리즘을 식별하는 캐릭터 라인을 돌려줍니다. 이름은, 표준적인 「SHA」, 「MD5」등의 Java 시큐리티명으로 할 필요가 있습니다. 알고리즘의 표준명에 대해서는,「Java 암호화 아키텍쳐(architecture) API 스펙 & 레퍼런스」의 부록 A 를 참조

반환값:
알고리즘의 이름

getDigestLength

public final int getDigestLength()
다이제스트의 길이를 바이트로 돌려줍니다. 이 처리가 프로바이더에 의해 지원되지 않고, 한편 구현이 복제 가능하지 않는 경우는 0 을 돌려줍니다.

반환값:
바이트 단위의 다이제스트장. 이 처리가 프로바이더에 의해 지원되지 않고, 한편 구현이 복제 가능하지 않는 경우는 0
도입된 버젼:
1.2

clone

public Object  clone()
             throws CloneNotSupportedException 
구현이 복제 가능한 경우는 복제를 돌려줍니다.

오버라이드(override):
클래스 MessageDigestSpi 내의 clone
반환값:
구현이 복제 가능한 경우는 복제
예외:
CloneNotSupportedException - Cloneable 를 지원하고 있지 않는 구현으로 불려 갔을 경우
관련 항목:
Cloneable

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.