JavaTM Platform
Standard Ed. 6

javax.crypto
클래스 Mac

java.lang.Object 
  상위를 확장 javax.crypto.Mac
모든 구현된 인터페이스:
Cloneable


public class Mac
extends Object
implements Cloneable

이 클래스는, 「메세지 인증 코드」(MAC) 알고리즘의 기능을 제공합니다.

MAC 는, 신뢰할 수 없는 매체에 송신 또는 포함된 정보의 무결성을, 비밀열쇠에 근거해 체크하는 방법을 제공합니다. 일반적으로, 메세지 인증 코드는, 비밀열쇠를 공유하는 2 개의 파티간에 송신되는 정보의 유효성을 검증하는 경우에 사용됩니다.

암호화 해시 기능에 근거하는 MAC 기구는, HMAC 로 불립니다. HMAC 는, 비밀 공유열쇠와 조합해, MD5 나 SHA-1 등의 임의의 암호화 해시 기능으로 사용할 수 있습니다. HMAC 에 대해서는, RFC 2104 로 규정되고 있습니다.

도입된 버젼:
1.4

생성자 의 개요
protected Mac (MacSpi  macSpi, Provider  provider, String  algorithm)
          MAC 객체를 생성합니다.
 
메소드의 개요
 Object clone ()
          프로바이더의 구현이 복제 가능한 경우는 복제를 돌려줍니다.
 byte[] doFinal ()
          MAC 조작을 종료합니다.
 byte[] doFinal (byte[] input)
          지정된 바이트의 배열을 처리해 MAC 조작을 종료합니다.
 void doFinal (byte[] output, int outOffset)
          MAC 조작을 종료합니다.
 String getAlgorithm ()
          이 Mac 객체의 알고리즘명을 돌려줍니다.
static Mac getInstance (String  algorithm)
          지정한 알고리즘을 구현하는 Mac 객체를 돌려줍니다.
static Mac getInstance (String  algorithm, Provider  provider)
          지정한 알고리즘을 구현하는 Mac 객체를 돌려줍니다.
static Mac getInstance (String  algorithm, String  provider)
          지정한 알고리즘을 구현하는 Mac 객체를 돌려줍니다.
 int getMacLength ()
          MAC 의 길이를 바이트 단위로 돌려줍니다.
 Provider getProvider ()
          이 Mac 객체의 프로바이더를 돌려줍니다.
 void init (Key  key)
          지정된 열쇠를 사용해 이 Mac 객체를 초기화합니다.
 void init (Key  key, AlgorithmParameterSpec  params)
          지정된 열쇠와 알고리즘 파라미터를 사용해 이 Mac 객체를 초기화합니다.
 void reset ()
          이 Mac 객체를 리셋 합니다.
 void update (byte input)
          지정된 바이트를 처리합니다.
 void update (byte[] input)
          지정된 바이트의 배열을 처리합니다.
 void update (byte[] input, int offset, int len)
          input 내의 len 바이트를 처리합니다.
 void update (ByteBuffer  input)
          ByteBuffer input 내의 input.position() 로부터 시작되는 input.remaining() 바이트를 처리합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

Mac

protected Mac(MacSpi  macSpi,
              Provider  provider,
              String  algorithm)
MAC 객체를 생성합니다.

파라미터:
macSpi - delegate
provider - 프로바이더
algorithm - 알고리즘
메소드의 상세

getAlgorithm

public final String  getAlgorithm()
Mac 객체의 알고리즘명을 돌려줍니다.

이것은, 이 Mac 객체를 생성한 getInstance 호출의 1 개로 지정된 이름과 같습니다.

반환값:
Mac 객체의 알고리즘명

getInstance

public static final Mac  getInstance(String  algorithm)
                             throws NoSuchAlgorithmException 
지정한 알고리즘을 구현하는 Mac 객체를 돌려줍니다.

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

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

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

getInstance

public static final Mac  getInstance(String  algorithm,
                                    String  provider)
                             throws NoSuchAlgorithmException ,
                                    NoSuchProviderException 
지정한 알고리즘을 구현하는 Mac 객체를 돌려줍니다.

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

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

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

getInstance

public static final Mac  getInstance(String  algorithm,
                                    Provider  provider)
                             throws NoSuchAlgorithmException 
지정한 알고리즘을 구현하는 Mac 객체를 돌려줍니다.

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

파라미터:
algorithm - 요구된 MAC 알고리즘의 표준명 표준의 알고리즘명에 대해서는, 「Java 암호화 아키텍쳐(architecture) 레퍼런스 가이드」의 부록 A 를 참조
provider - 프로바이더
반환값:
새로운 Mac 객체
예외:
NoSuchAlgorithmException - 지정된 Provider 객체로 지정된 알고리즘의 MacSpi 의 구현이 없는 경우
IllegalArgumentException - provider 가 null 의 경우
관련 항목:
Provider

getProvider

public final Provider  getProvider()
Mac 객체의 프로바이더를 돌려줍니다.

반환값:
Mac 객체의 프로바이더

getMacLength

public final int getMacLength()
MAC 의 길이를 바이트 단위로 돌려줍니다.

반환값:
바이트 단위의 MAC 장

init

public final void init(Key  key)
                throws InvalidKeyException 
지정된 열쇠를 사용해 이 Mac 객체를 초기화합니다.

파라미터:
key - 열쇠
예외:
InvalidKeyException - 지정된 열쇠가 이 MAC 의 초기화에 올바르지 않은 경우

init

public final void init(Key  key,
                       AlgorithmParameterSpec  params)
                throws InvalidKeyException ,
                       InvalidAlgorithmParameterException 
지정된 열쇠와 알고리즘 파라미터를 사용해 이 Mac 객체를 초기화합니다.

파라미터:
key - 열쇠
params - 알고리즘 파라미터
예외:
InvalidKeyException - 지정된 열쇠가 이 MAC 의 초기화에 올바르지 않은 경우
InvalidAlgorithmParameterException - 지정된 알고리즘 파라미터가 이 MAC 에 올바르지 않은 경우

update

public final void update(byte input)
                  throws IllegalStateException 
지정된 바이트를 처리합니다.

파라미터:
input - 처리되는 입력 바이트
예외:
IllegalStateException - 이 Mac 가 초기화되어 있지 않은 경우

update

public final void update(byte[] input)
                  throws IllegalStateException 
지정된 바이트의 배열을 처리합니다.

파라미터:
input - 처리되는 바이트의 배열
예외:
IllegalStateException - 이 Mac 가 초기화되어 있지 않은 경우

update

public final void update(byte[] input,
                         int offset,
                         int len)
                  throws IllegalStateException 
input 내의 len 바이트를 처리합니다. offset 로부터 시작합니다.

파라미터:
input - 입력 버퍼
offset - 입력을 개시하는 input 내의 오프셋(offset)
len - 처리하는 바이트수
예외:
IllegalStateException - 이 Mac 가 초기화되어 있지 않은 경우

update

public final void update(ByteBuffer  input)
ByteBuffer input 내의 input.position() 로부터 시작되는 input.remaining() 바이트를 처리합니다. 종료시에, 버퍼의 위치는 리밋트에 동일해집니다만, 리밋트는 변경되지 않습니다.

파라미터:
input - ByteBuffer
예외:
IllegalStateException - 이 Mac 가 초기화되어 있지 않은 경우
도입된 버젼:
1.5

doFinal

public final byte[] doFinal()
                     throws IllegalStateException 
MAC 조작을 종료합니다.

이 메소드를 호출하면(자),Mac 객체는,init(Key) 또는 init(Key, AlgorithmParameterSpec) 의 호출을 개입시켜 이전 초기화된 상태에 리셋 됩니다. 즉, 객체는, 필요에 따라서 updatedoFinal 의 신규의 호출을 개입시켜 리셋 되어 같은 열쇠로부터 다른 MAC 를 생성하기 위해서 사용 가능하게 됩니다. 다른 열쇠로 이 Mac 객체를 재사용하기 위해서는,init(Key) 또는 init(Key, AlgorithmParameterSpec) 의 호출을 개입시켜 재차 초기화할 필요가 있습니다.

반환값:
MAC 결과
예외:
IllegalStateException - 이 Mac 가 초기화되어 있지 않은 경우

doFinal

public final void doFinal(byte[] output,
                          int outOffset)
                   throws ShortBufferException ,
                          IllegalStateException 
MAC 조작을 종료합니다.

이 메소드를 호출하면(자),Mac 객체는,init(Key) 또는 init(Key, AlgorithmParameterSpec) 의 호출을 개입시켜 이전 초기화된 상태에 리셋 됩니다. 즉, 객체는, 필요에 따라서 updatedoFinal 의 신규의 호출을 개입시켜 리셋 되어 같은 열쇠로부터 다른 MAC 를 생성하기 위해서 사용 가능하게 됩니다. 다른 열쇠로 이 Mac 객체를 재사용하기 위해서는,init(Key) 또는 init(Key, AlgorithmParameterSpec) 의 호출을 개입시켜 재차 초기화할 필요가 있습니다.

MAC 결과는 output 에 포함됩니다. outOffset 로부터 시작됩니다.

파라미터:
output - MAC 결과가 포함되는 버퍼
outOffset - MAC 가 포함되는 output 내의 오프셋(offset)
예외:
ShortBufferException - 지정된 출력 버퍼가 너무 작아 결과를 보관 유지할 수 없는 경우
IllegalStateException - 이 Mac 가 초기화되어 있지 않은 경우

doFinal

public final byte[] doFinal(byte[] input)
                     throws IllegalStateException 
지정된 바이트의 배열을 처리해 MAC 조작을 종료합니다.

이 메소드를 호출하면(자),Mac 객체는,init(Key) 또는 init(Key, AlgorithmParameterSpec) 의 호출을 개입시켜 이전 초기화된 상태에 리셋 됩니다. 즉, 객체는, 필요에 따라서 updatedoFinal 의 신규의 호출을 개입시켜 리셋 되어 같은 열쇠로부터 다른 MAC 를 생성하기 위해서 사용 가능하게 됩니다. 다른 열쇠로 이 Mac 객체를 재사용하기 위해서는,init(Key) 또는 init(Key, AlgorithmParameterSpec) 의 호출을 개입시켜 재차 초기화할 필요가 있습니다.

파라미터:
input - 바이트 단위의 데이터
반환값:
MAC 결과
예외:
IllegalStateException - 이 Mac 가 초기화되어 있지 않은 경우

reset

public final void reset()
Mac 객체를 리셋 합니다.

이 메소드를 호출하면(자),Mac 객체는,init(Key) 또는 init(Key, AlgorithmParameterSpec) 의 호출을 개입시켜 이전 초기화된 상태에 리셋 됩니다. 즉, 객체는, 필요에 따라서 updatedoFinal 의 신규의 호출을 개입시켜 리셋 되어 같은 열쇠로부터 다른 MAC 를 생성하기 위해서 사용 가능하게 됩니다. 다른 열쇠로 이 Mac 객체를 재사용하기 위해서는,init(Key) 또는 init(Key, AlgorithmParameterSpec) 의 호출을 개입시켜 재차 초기화할 필요가 있습니다.


clone

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

오버라이드(override):
클래스 Object 내의 clone
반환값:
프로바이더의 구현이 복제 가능한 경우는 복제
예외:
CloneNotSupportedException - Cloneable 를 지원하고 있지 않는 delegate에서 불려 갔을 경우
관련 항목:
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 도 참조해 주세요.