JavaTM Platform
Standard Ed. 6

javax.crypto
클래스 CipherSpi

java.lang.Object 
  상위를 확장 javax.crypto.CipherSpi


public abstract class CipherSpi
extends Object

이 클래스는,Cipher 클래스의 Service Provider Interface (SPI)를 정의합니다. 특정의 암호 알고리즘의 구현을 제공하는 각 암호화 서비스 프로바이더는, 이 클래스의 모든 추상 메소드를 구현할 필요가 있습니다.

CipherSpi 클래스의 인스턴스를 캡슐화하는 Cipher 의 인스턴스를 생성하려면 , 어플리케이션은 Cipher 엔진 클래스의 getInstance 팩토리 메소드의 1 개를 호출해, 요구된 「변환」을 지정합니다. 어플리케이션은, 필요에 따라서, 프로바이더의 이름을 지정할 수도 있습니다.

「변환」이란, 출력을 생성하기 위해서, 지정된 입력에 대해서 실행하는 조작 (또는 일련의 조작)을 기술하는 캐릭터 라인입니다. 변환에는 항상 암호화 알고리즘명 (DES 등)이 포함되어 있어 피드백 모드와 패딩 방식이 나중에 계속되는 일이 있습니다.

변환은, 다음의 서식에서 기술됩니다.

후자의 경우, 모드와 패딩 방식에 대해서는 프로바이더 고유의 디폴트 값가 사용됩니다. 유효한 변환의 예를 다음에 나타냅니다.

Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");
 

프로바이더는, 「알고리즘/모드/패딩」의 각 편성에 대해서 개별의 클래스를 제공하든가, 혹은 「알고리즘」, 「알고리즘/모드」, 또는 「알고리즘//패딩」 (이중 slash에 주의)에 대응하는 서브 변환을 나타내는 것보다 총칭 클래스를 제공할 수가 있습니다. 총칭 클래스를 제공하는 경우, 요구된 모드나 패딩은, 프로바이더의 CipherSpi 의 서브 클래스의 engineSetModeengineSetPadding 메소드를 호출하는,CiphergetInstance 메소드에 의해 자동적으로 설정됩니다.

프로바이더의 마스터 클래스내의 Cipher 프로퍼티의 형식은, 다음의 어떤 것인가가 됩니다.

예를 들어, 프로바이더는 DES/ECB/PKCS5Padding, DES/CBC/PKCS5Padding, DES/CFB/PKCS5Padding, 한층 더 DES/OFB/PKCS5Padding 를 각각 구현하는 CipherSpi 의 서브 클래스를 제공 가능합니다. 이 프로바이더는, 마스터 클래스내에 다음의 Cipher 프로퍼티을 보관 유지합니다.

다른 프로바이더는, 상기의 각 모드에 대응한 클래스 (ECB, CBC, CFB, 및 OFB 용으로 각각 1 개의 클래스)를 구현할 수 있습니다. 또, PKCS5Padding 에 대응하는 1 개의 클래스, 및 CipherSpi 로부터 서브 클래스화 된 총칭 DES 클래스도 구현할 수 있습니다. 이 프로바이더는, 마스터 클래스내에 다음의 Cipher 프로퍼티을 보관 유지합니다.

「algorithm」형식의 변환의 경우,Cipher 엔진 클래스의 getInstance 팩토리 메소드는, 다음의 규칙에 따라 프로바이더의 CipherSpi 구현을 인스턴스화합니다.

  1. 프로바이더가, 지정된 「algorithm」에 대응하는 CipherSpi 의 서브 클래스를 등록이 끝난 상태인가 어떤가를 체크한다.  

    등록을 마친 경우, 이 클래스를 인스턴스화해, 이 모드 및 패딩 방식의 디폴트 값 (프로바이더에 의해 제공)를 사용 가능하게 합니다.  

    미등록의 경우, 예외 NoSuchAlgorithmException 를 throw 합니다.

「algorithm/mode/padding」형식의 변환의 경우,Cipher 엔진 클래스의 getInstance 팩토리 메소드는, 다음의 규칙에 따라 프로바이더의 CipherSpi 구현을 인스턴스화합니다.

  1. 프로바이더가, 지정된 「algorithm/mode/padding」변환에 대응하는 CipherSpi 의 서브 클래스를 등록이 끝난 상태인가 어떤가를 체크한다.  

    등록을 마친 경우, 이 클래스를 인스턴스화합니다.  

    미등록의 경우, 다음의 스텝에 진행됩니다.

  2. 프로바이더가, 서브 변환 「algorithm/mode」에 대응하는 CipherSpi 의 서브 클래스를 등록이 끝난 상태인가 어떤가를 체크한다.  

    등록을 마친 경우, 이 클래스를 인스턴스화하고 나서, 신규 인스턴스에 대해 engineSetPadding(padding) 를 호출합니다.  

    미등록의 경우, 다음의 스텝에 진행됩니다.

  3. 프로바이더가, 서브 변환 「algorithm//padding」 (더블즈 러쉬에 주의)에 대응하는 CipherSpi 의 서브 클래스를 등록이 끝난 상태인가 어떤가를 체크한다.  

    등록을 마친 경우, 이 클래스를 인스턴스화하고 나서, 신규 인스턴스에 대해 engineSetMode(mode) 를 호출합니다.  

    미등록의 경우, 다음의 스텝에 진행됩니다.

  4. 프로바이더가, 서브 변환 「algorithm」에 대응하는 CipherSpi 의 서브 클래스를 등록이 끝난 상태인가 어떤가를 체크한다.  

    등록을 마친 경우, 이 클래스를 인스턴스화하고 나서, 신규 인스턴스에 대해 engineSetMode(mode)engineSetPadding(padding) 를 호출합니다.  

    미등록의 경우, 예외 NoSuchAlgorithmException 를 throw 합니다.

도입된 버젼:
1.4
관련 항목:
KeyGenerator , SecretKey

생성자 의 개요
CipherSpi ()
           
 
메소드의 개요
protected abstract  byte[] engineDoFinal (byte[] input, int inputOffset, int inputLen)
          단일의 부분으로부터 완성되는 조작으로 데이터를 암호화 또는 복호화 하는지, 복수의 부분으로부터 완성되는 조작을 종료합니다.
protected abstract  int engineDoFinal (byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
          단일의 부분으로부터 완성되는 조작으로 데이터를 암호화 또는 복호화 하는지, 복수의 부분으로부터 완성되는 조작을 종료합니다.
protected  int engineDoFinal (ByteBuffer  input, ByteBuffer  output)
          단일의 부분으로부터 완성되는 조작으로 데이터를 암호화 또는 복호화 하는지, 복수의 부분으로부터 완성되는 조작을 종료합니다.
protected abstract  int engineGetBlockSize ()
          블록 사이즈를 돌려줍니다 (바이트 단위).
protected abstract  byte[] engineGetIV ()
          새로운 버퍼의 초기화 벡터 (IV)를 돌려줍니다.
protected  int engineGetKeySize (Key  key)
          지정된 열쇠 객체의 열쇠 사이즈를 비트 단위로 돌려줍니다.
protected abstract  int engineGetOutputSize (int inputLen)
          입력의 길이 inputLen (바이트 단위)를 지정해, 다음의 update 또는 doFinal 조작의 결과를 보관 유지하기 위해서 필요한 출력 버퍼의 길이를 바이트수로 돌려줍니다.
protected abstract  AlgorithmParameters engineGetParameters ()
          이 암호로 사용되는 파라미터를 돌려줍니다.
protected abstract  void engineInit (int opmode, Key  key, AlgorithmParameterSpec  params, SecureRandom  random)
          열쇠, 알고리즘 파라미터세트, 및 random number generation의 원을 사용해 이 암호를 초기화합니다.
protected abstract  void engineInit (int opmode, Key  key, AlgorithmParameters  params, SecureRandom  random)
          열쇠, 알고리즘 파라미터세트, 및 random number generation의 원을 사용해 이 암호를 초기화합니다.
protected abstract  void engineInit (int opmode, Key  key, SecureRandom  random)
          열쇠와 random number generation의 원을 사용해 이 암호를 초기화합니다.
protected abstract  void engineSetMode (String  mode)
          이 암호의 모드를 설정합니다.
protected abstract  void engineSetPadding (String  padding)
          이 암호의 패딩 기구를 설정합니다.
protected  Key engineUnwrap (byte[] wrappedKey, String  wrappedKeyAlgorithm, int wrappedKeyType)
          전에 랩 된 열쇠를 랩 해제합니다.
protected abstract  byte[] engineUpdate (byte[] input, int inputOffset, int inputLen)
          복수의 부분으로부터 완성되는 암호화 또는 복호화 조작 (이 암호의 초기화 방법에 의해 다르다)을 계속해, 다른 데이터 부분을 처리합니다.
protected abstract  int engineUpdate (byte[] input, int inputOffset, int inputLen, byte[] output, int outputOffset)
          복수의 부분으로부터 완성되는 암호화 또는 복호화 조작 (이 암호의 초기화 방법에 의해 다르다)을 계속해, 다른 데이터 부분을 처리합니다.
protected  int engineUpdate (ByteBuffer  input, ByteBuffer  output)
          복수의 부분으로부터 완성되는 암호화 또는 복호화 조작 (이 암호의 초기화 방법에 의해 다르다)을 계속해, 다른 데이터 부분을 처리합니다.
protected  byte[] engineWrap (Key  key)
          열쇠를 랩 합니다.
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

CipherSpi

public CipherSpi()
메소드의 상세

engineSetMode

protected abstract void engineSetMode(String  mode)
                               throws NoSuchAlgorithmException 
이 암호의 모드를 설정합니다.

파라미터:
mode - 암호화 모드
예외:
NoSuchAlgorithmException - 요구된 암호화 모드가 존재하지 않는 경우

engineSetPadding

protected abstract void engineSetPadding(String  padding)
                                  throws NoSuchPaddingException 
이 암호의 패딩 기구를 설정합니다.

파라미터:
padding - 패딩 기구
예외:
NoSuchPaddingException - 요구된 패딩 기구가 존재하지 않는 경우

engineGetBlockSize

protected abstract int engineGetBlockSize()
블록 사이즈를 돌려줍니다 (바이트 단위).

반환값:
블록 사이즈 (바이트 단위). 기본이 되는 알고리즘이 블록 암호가 아닌 경우는 0

engineGetOutputSize

protected abstract int engineGetOutputSize(int inputLen)
입력의 길이 inputLen (바이트 단위)를 지정해, 다음의 update 또는 doFinal 조작의 결과를 보관 유지하기 위해서 필요한 출력 버퍼의 길이를 바이트수로 돌려줍니다.

이 호출에서는, 이전의 update 호출의 처리되어 있지 않은 (버퍼에 있다) 데이터를 고려해, 패딩 합니다.

다음의 update 또는 doFinal 호출의 실제의 출력 길이은, 이 메소드가 돌려주는 길이보다 작은 일이 있습니다.

파라미터:
inputLen - 입력 길이 (바이트 단위)
반환값:
필요한 출력 버퍼 사이즈 (바이트 단위)

engineGetIV

protected abstract byte[] engineGetIV()
새로운 버퍼의 초기화 벡터 (IV)를 돌려줍니다.

이것은, IV 가 사용자 지정의 패스 프레이즈로부터 파생하는 패스워드 베이스의 암호화 또는 복호화의 문맥에 대해 도움이 됩니다.

반환값:
새로운 버퍼내의 초기화 벡터. 기본이 되는 알고리즘이 IV 를 사용하지 않는 경우, 또는 IV 가 설정되어 있지 않은 경우는 null

engineGetParameters

protected abstract AlgorithmParameters  engineGetParameters()
이 암호로 사용되는 파라미터를 돌려줍니다.

반환되는 파라미터는, 이 암호를 초기화하는데 사용한 것과 같은 경우가 있습니다. 또는, 반환되는 파라미터에는, 이 암호에 알고리즘 파라미터가 필요해, 한편 알고리즘 파라미터로 초기화되지 않았던 경우에, 기본이 되는 암호 구현으로 사용되는 디폴트와 랜덤의 파라미터치의 편성이 포함되는 일도 있습니다.

반환값:
이 암호로 사용되는 파라미터. 이 암호로 파라미터를 사용하지 않는 경우는 null

engineInit

protected abstract void engineInit(int opmode,
                                   Key  key,
                                   SecureRandom  random)
                            throws InvalidKeyException 
열쇠와 random number generation의 원을 사용해 이 암호를 초기화합니다.

이 암호는,opmode 의 값에 따라, 암호화, 복호화, 열쇠 랩핑, 또는 열쇠 랩핑 해제의 4 개의 조작의 1 개에 맞추어 초기화됩니다.

이 암호가, 지정된 key 로부터 파생할 수 없는 알고리즘 파라미터를 필요로 하는 경우, 기본이 되는 암호 구현은, 암호화 또는 열쇠 랩핑용으로 초기화되고 있으면, 프로바이더 고유의 디폴트 또는 랜덤치를 사용해 필요한 파라미터 자체를 생성해, 복호화 또는 열쇠 랩핑 해제용으로 초기화되고 있으면,InvalidKeyException 를 발생시킵니다. 생성된 파라미터는,engineGetParameters 또는 engineGetIV (파라미터가 IV 의 경우)를 사용해 꺼낼 수가 있습니다.

이 암호 (기본이 되는 피드백 또는 패딩 방식을 포함한다)가 난수 바이트를 필요로 하는 경우 (파라미터 생성을 위해 등)는,random 로부터 가져옵니다.

Cipher 객체가 초기화되면(자), 이전에 취득한 상태는 모두 없어집니다. 즉, Cipher 를 초기화하는 것은, 그 Cipher 의 새로운 인스턴스를 작성해 초기화하는 것과 같습니다.

파라미터:
opmode - 이 암호의 조작 모드 (ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODE, 또는 UNWRAP_MODE 의 어떤 것이나)
key - 암호화열쇠
random - random number generation의 원
예외:
InvalidKeyException - 지정된 열쇠가 이 암호의 초기화에 올바르지 않은 경우, 또는 이 암호가 복호화용으로 초기화되어 지정된 열쇠로부터 판정할 수가 없는 알고리즘 파라미터를 필요로 하는 경우

engineInit

protected abstract void engineInit(int opmode,
                                   Key  key,
                                   AlgorithmParameterSpec  params,
                                   SecureRandom  random)
                            throws InvalidKeyException ,
                                   InvalidAlgorithmParameterException 
열쇠, 알고리즘 파라미터세트, 및 random number generation의 원을 사용해 이 암호를 초기화합니다.

이 암호는,opmode 의 값에 따라, 암호화, 복호화, 열쇠 랩핑, 또는 열쇠 랩핑 해제의 4 개의 조작의 1 개에 맞추어 초기화됩니다.

이 암호가 알고리즘 파라미터를 필요로 해,params 가 null 의 경우, 기본이 되는 암호 구현은, 암호화 또는 열쇠 랩핑용으로 초기화되고 있으면, 프로바이더 고유의 디폴트 또는 랜덤치를 사용해 필요한 파라미터 자체를 생성해, 복호화 또는 열쇠 랩핑 해제용으로 초기화되고 있으면,InvalidAlgorithmParameterException 를 발생시킵니다. 생성된 파라미터는,engineGetParameters 또는 engineGetIV (파라미터가 IV 의 경우)를 사용해 꺼낼 수가 있습니다.

이 암호 (기본이 되는 피드백 또는 패딩 방식을 포함한다)가 난수 바이트를 필요로 하는 경우 (파라미터 생성을 위해 등)는,random 로부터 가져옵니다.

Cipher 객체가 초기화되면(자), 이전에 취득한 상태는 모두 없어집니다. 즉, Cipher 를 초기화하는 것은, 그 Cipher 의 새로운 인스턴스를 작성해 초기화하는 것과 같습니다.

파라미터:
opmode - 이 암호의 조작 모드 (ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODE, 또는 UNWRAP_MODE 의 어떤 것이나)
key - 암호화열쇠
params - 알고리즘 파라미터
random - random number generation의 원
예외:
InvalidKeyException - 지정된 열쇠가 이 암호의 초기화에 올바르지 않은 경우
InvalidAlgorithmParameterException - 지정된 알고리즘 파라미터가 이 암호에 올바르지 않은 경우, 또는 이 암호가 복호화용으로 초기화되어 알고리즘 파라미터를 필요로 해,params 가 null 의 경우

engineInit

protected abstract void engineInit(int opmode,
                                   Key  key,
                                   AlgorithmParameters  params,
                                   SecureRandom  random)
                            throws InvalidKeyException ,
                                   InvalidAlgorithmParameterException 
열쇠, 알고리즘 파라미터세트, 및 random number generation의 원을 사용해 이 암호를 초기화합니다.

이 암호는,opmode 의 값에 따라, 암호화, 복호화, 열쇠 랩핑, 또는 열쇠 랩핑 해제의 4 개의 조작의 1 개에 맞추어 초기화됩니다.

이 암호가 알고리즘 파라미터를 필요로 해,params 가 null 의 경우, 기본이 되는 암호 구현은, 암호화 또는 열쇠 랩핑용으로 초기화되고 있으면, 프로바이더 고유의 디폴트 또는 랜덤치를 사용해 필요한 파라미터 자체를 생성해, 복호화 또는 열쇠 랩핑 해제용으로 초기화되고 있으면,InvalidAlgorithmParameterException 를 발생시킵니다. 생성된 파라미터는,engineGetParameters 또는 engineGetIV (파라미터가 IV 의 경우)를 사용해 꺼낼 수가 있습니다.

이 암호 (기본이 되는 피드백 또는 패딩 방식을 포함한다)가 난수 바이트를 필요로 하는 경우 (파라미터 생성을 위해 등)는,random 로부터 가져옵니다.

Cipher 객체가 초기화되면(자), 이전에 취득한 상태는 모두 없어집니다. 즉, Cipher 를 초기화하는 것은, 그 Cipher 의 새로운 인스턴스를 작성해 초기화하는 것과 같습니다.

파라미터:
opmode - 이 암호의 조작 모드 (ENCRYPT_MODE,DECRYPT_MODE,WRAP_MODE, 또는 UNWRAP_MODE 의 어떤 것이나)
key - 암호화열쇠
params - 알고리즘 파라미터
random - random number generation의 원
예외:
InvalidKeyException - 지정된 열쇠가 이 암호의 초기화에 올바르지 않은 경우
InvalidAlgorithmParameterException - 지정된 알고리즘 파라미터가 이 암호에 올바르지 않은 경우, 또는 이 암호가 복호화용으로 초기화되어 알고리즘 파라미터를 필요로 해,params 가 null 의 경우

engineUpdate

protected abstract byte[] engineUpdate(byte[] input,
                                       int inputOffset,
                                       int inputLen)
복수의 부분으로부터 완성되는 암호화 또는 복호화 조작 (이 암호의 초기화 방법에 의해 다르다)을 계속해, 다른 데이터 부분을 처리합니다.

inputOffset 로부터 시작되는,input 버퍼내의 최초의 inputLen 바이트가 처리되어 결과가 새로운 버퍼에 포함됩니다.

파라미터:
input - 입력 버퍼
inputOffset - 입력을 개시하는 input 내의 오프셋(offset)
inputLen - 입력 길이
반환값:
결과가 들어간 새로운 버퍼. 기본이 되는 암호가 블록 암호이며, 입력 데이터가 단인가 지나 새로운 블록이 되지 않는 경우는 null

engineUpdate

protected abstract int engineUpdate(byte[] input,
                                    int inputOffset,
                                    int inputLen,
                                    byte[] output,
                                    int outputOffset)
                             throws ShortBufferException 
복수의 부분으로부터 완성되는 암호화 또는 복호화 조작 (이 암호의 초기화 방법에 의해 다르다)을 계속해, 다른 데이터 부분을 처리합니다.

inputOffset 로부터 시작되는,input 버퍼- 안의 최초의 inputLen 바이트가 처리되어 결과는 output 버퍼의 outputOffset 로부터 시작되는 위치에 포함됩니다.

output 버퍼가 너무 작아 결과를 보관 유지할 수 없는 경우는,ShortBufferException 가 throw 됩니다.

파라미터:
input - 입력 버퍼
inputOffset - 입력을 개시하는 input 내의 오프셋(offset)
inputLen - 입력 길이
output - 결과를 포함하는 버퍼
outputOffset - 결과가 포함되는 output 내의 오프셋(offset)
반환값:
output 에 포함된 바이트수
예외:
ShortBufferException - 지정된 출력 버퍼가 너무 작아 결과를 보관 유지할 수 없는 경우

engineUpdate

protected int engineUpdate(ByteBuffer  input,
                           ByteBuffer  output)
                    throws ShortBufferException 
복수의 부분으로부터 완성되는 암호화 또는 복호화 조작 (이 암호의 초기화 방법에 의해 다르다)을 계속해, 다른 데이터 부분을 처리합니다.

input.position() 로부터 시작되는 모든 input.remaining() 바이트가 처리됩니다. 결과는 출력 버퍼에 포함됩니다. 종료시에, 입력 버퍼의 위치는 리밋트에 동일해집니다만, 리밋트는 변경되지 않습니다. 출력 버퍼의 위치는 n 만 증가합니다. n 는, 이 메소드가 돌려주는 값입니다. 출력 버퍼의 리밋트는 변경되지 않습니다.

output.remaining() 바이트가 결과를 보관 유지하는데 불충분한 경우는,ShortBufferException 가 throw 됩니다.

ByteBuffer 를 바이트 배열보다 효율적으로 처리할 수 있는 경우, 이 메소드를 서브 클래스에서 오버라이드(override) 하는 것을 검토해 주세요.

파라미터:
input - 입력 ByteBuffer
output - 출력 ByteByffer
반환값:
output 에 포함된 바이트수
예외:
ShortBufferException - 출력 버퍼내에 남아 있는 용량이 부족한 경우
NullPointerException - 어느 쪽의 파라미터도 null 의 경우
도입된 버젼:
1.5

engineDoFinal

protected abstract byte[] engineDoFinal(byte[] input,
                                        int inputOffset,
                                        int inputLen)
                                 throws IllegalBlockSizeException ,
                                        BadPaddingException 
단일의 부분으로부터 완성되는 조작으로 데이터를 암호화 또는 복호화 하는지, 복수의 부분으로부터 완성되는 조작을 종료합니다. 데이터는, 이 암호가 초기화된 방법에 따라, 암호화 또는 복호화 됩니다.

inputOffset 로부터 시작되는 input 버퍼내의 최초의 inputLen 바이트, 및 전의 update 조작으로 버퍼에 넣어진 가능성이 있는 모든 입력 바이트가 처리되어 패딩 (요구되었을 경우)이 적용됩니다. 결과는 새로운 버퍼에 포함됩니다.

종료시에, 이 메소드는 이 암호 객체를 앞에 두고 engineInit 를 호출해 초기화되었을 때 상태에 리셋 합니다. 즉, 객체는 리셋 되어, 한층 더 데이터를 암호화 또는 복호화 하기 위해서 사용할 수 있습니다 (engineInit 의 호출로 지정된 조작 모드에 의해 다르다).

주:예외가 throw 되는 경우, 이 암호 객체는 리셋 하지 않으면 재차 사용할 수 없는 경우가 있습니다.

파라미터:
input - 입력 버퍼
inputOffset - 입력을 개시하는 input 내의 오프셋(offset)
inputLen - 입력 길이
반환값:
결과가 들어간 새로운 버퍼
예외:
IllegalBlockSizeException - 이 암호가 블록 암호이며, 패딩이 요구되지 않고 (암호화 모드의 경우만), 이 암호로 처리된 데이터의 입력 길이의 합계가 블록 사이즈의 배수가 아닌 경우. 또는, 이 암호화 알고리즘이, 지정된 입력 데이터를 처리할 수 없는 경우
BadPaddingException - 이 암호가 복호화 모드이며, 패딩 (또는 패딩 해제)이 요구되었지만, 복호화 된 데이터가 적절한 패딩 바이트로 바인드 되지 않는 경우

engineDoFinal

protected abstract int engineDoFinal(byte[] input,
                                     int inputOffset,
                                     int inputLen,
                                     byte[] output,
                                     int outputOffset)
                              throws ShortBufferException ,
                                     IllegalBlockSizeException ,
                                     BadPaddingException 
단일의 부분으로부터 완성되는 조작으로 데이터를 암호화 또는 복호화 하는지, 복수의 부분으로부터 완성되는 조작을 종료합니다. 데이터는, 이 암호가 초기화된 방법에 따라, 암호화 또는 복호화 됩니다.

inputOffset 로부터 시작되는 input 버퍼내의 최초의 inputLen 바이트, 및 전의 update 조작으로 버퍼에 넣어진 가능성이 있는 모든 입력 바이트가 처리되어 패딩 (요구되었을 경우)이 적용됩니다. 결과는,outputOffset 로부터 시작되는 output 버퍼에 포함됩니다.

output 버퍼가 너무 작아 결과를 보관 유지할 수 없는 경우는,ShortBufferException 가 throw 됩니다.

종료시에, 이 메소드는 이 암호 객체를 앞에 두고 engineInit 를 호출해 초기화되었을 때 상태에 리셋 합니다. 즉, 객체는 리셋 되어, 한층 더 데이터를 암호화 또는 복호화 하기 위해서 사용할 수 있습니다 (engineInit 의 호출로 지정된 조작 모드에 의해 다르다).

주:예외가 throw 되는 경우, 이 암호 객체는 리셋 하지 않으면 재차 사용할 수 없는 경우가 있습니다.

파라미터:
input - 입력 버퍼
inputOffset - 입력을 개시하는 input 내의 오프셋(offset)
inputLen - 입력 길이
output - 결과를 포함하는 버퍼
outputOffset - 결과가 포함되는 output 내의 오프셋(offset)
반환값:
output 에 포함된 바이트수
예외:
IllegalBlockSizeException - 이 암호가 블록 암호이며, 패딩이 요구되지 않고 (암호화 모드의 경우만), 이 암호로 처리된 데이터의 입력 길이의 합계가 블록 사이즈의 배수가 아닌 경우. 또는, 이 암호화 알고리즘이, 지정된 입력 데이터를 처리할 수 없는 경우
ShortBufferException - 지정된 출력 버퍼가 너무 작아 결과를 보관 유지할 수 없는 경우
BadPaddingException - 이 암호가 복호화 모드이며, 패딩 (또는 패딩 해제)이 요구되었지만, 복호화 된 데이터가 적절한 패딩 바이트로 바인드 되지 않는 경우

engineDoFinal

protected int engineDoFinal(ByteBuffer  input,
                            ByteBuffer  output)
                     throws ShortBufferException ,
                            IllegalBlockSizeException ,
                            BadPaddingException 
단일의 부분으로부터 완성되는 조작으로 데이터를 암호화 또는 복호화 하는지, 복수의 부분으로부터 완성되는 조작을 종료합니다. 데이터는, 이 암호가 초기화된 방법에 따라, 암호화 또는 복호화 됩니다.

input.position() 로부터 시작되는 모든 input.remaining() 바이트가 처리됩니다. 결과는 출력 버퍼에 포함됩니다. 종료시에, 입력 버퍼의 위치는 리밋트에 동일해집니다만, 리밋트는 변경되지 않습니다. 출력 버퍼의 위치는 n 만 증가합니다. n 는, 이 메소드가 돌려주는 값입니다. 출력 버퍼의 리밋트는 변경되지 않습니다.

output.remaining() 바이트가 결과를 보관 유지하는데 불충분한 경우는,ShortBufferException 가 throw 됩니다.

종료시에, 이 메소드는 이 암호 객체를 앞에 두고 engineInit 를 호출해 초기화되었을 때 상태에 리셋 합니다. 즉, 객체는 리셋 되어, 한층 더 데이터를 암호화 또는 복호화 하기 위해서 사용할 수 있습니다 (engineInit 의 호출로 지정된 조작 모드에 의해 다르다).

주:예외가 throw 되는 경우, 이 암호 객체는 리셋 하지 않으면 재차 사용할 수 없는 경우가 있습니다.

ByteBuffer 를 바이트 배열보다 효율적으로 처리할 수 있는 경우, 이 메소드를 서브 클래스에서 오버라이드(override) 하는 것을 검토해 주세요.

파라미터:
input - 입력 ByteBuffer
output - 출력 ByteByffer
반환값:
output 에 포함된 바이트수
예외:
IllegalBlockSizeException - 이 암호가 블록 암호이며, 패딩이 요구되지 않고 (암호화 모드의 경우만), 이 암호로 처리된 데이터의 입력 길이의 합계가 블록 사이즈의 배수가 아닌 경우. 또는, 이 암호화 알고리즘이, 지정된 입력 데이터를 처리할 수 없는 경우
ShortBufferException - 출력 버퍼내에 남아 있는 용량이 부족한 경우
BadPaddingException - 이 암호가 복호화 모드이며, 패딩 (또는 패딩 해제)이 요구되었지만, 복호화 된 데이터가 적절한 패딩 바이트로 바인드 되지 않는 경우
NullPointerException - 어느 쪽의 파라미터도 null 의 경우
도입된 버젼:
1.5

engineWrap

protected byte[] engineWrap(Key  key)
                     throws IllegalBlockSizeException ,
                            InvalidKeyException 
열쇠를 랩 합니다.

이 구상 메소드는, 사전에 정의된 이 abstract 클래스에 추가된 것입니다. 하위 호환성을 위해서(때문에), 추상 메소드에는 할 수 없습니다. 열쇠를 랩 하기 위해서, 프로바이더에 의해 오버라이드(override) 되는 경우가 있습니다. 그러한 오버라이드(override)를 실시하면, 지정된 열쇠를 랩 할 수 없는 경우에, IllegalBlockSizeException 또는 InvalidKeyException (지정된 환경하)가 throw 됩니다. 이 메소드가 오버라이드(override) 되지 않는 경우는, 항상 UnsupportedOperationException 가 throw 됩니다.

파라미터:
key - 랩 되는 열쇠
반환값:
랩 된 열쇠
예외:
IllegalBlockSizeException - 이 암호가 블록 암호이며, 패딩이 요구되지 않고, 랩 되는 열쇠의 인코딩의 길이가 블록 사이즈의 배수가 아닌 경우
InvalidKeyException - 이 암호를 사용해 열쇠를 랩 하는 것이 불가능한가 안전하지 않은 경우 (하드웨어 보호된 열쇠가 소프트웨어만의 암호에게 건네지는 경우 등)

engineUnwrap

protected Key  engineUnwrap(byte[] wrappedKey,
                           String  wrappedKeyAlgorithm,
                           int wrappedKeyType)
                    throws InvalidKeyException ,
                           NoSuchAlgorithmException 
전에 랩 된 열쇠를 랩 해제합니다.

이 구상 메소드는, 사전에 정의된 이 abstract 클래스에 추가된 것입니다. 하위 호환성을 위해서(때문에), 추상 메소드에는 할 수 없습니다. 전에 랩 된 열쇠를 랩 해제하기 위해서, 프로바이더에 의해 오버라이드(override) 되는 경우가 있습니다. 그러한 오버라이드(override)를 실시하면, 지정된, 랩 되고 있는 열쇠를 랩 해제할 수 없는 경우에, InvalidKeyException 가 throw 됩니다. 이 메소드가 오버라이드(override) 되지 않는 경우는, 항상 UnsupportedOperationException 가 throw 됩니다.

파라미터:
wrappedKey - 랩이 해제되는 열쇠
wrappedKeyAlgorithm - 랩 된 열쇠에 관련한 알고리즘
wrappedKeyType - 랩 된 열쇠의 타입. SECRET_KEY,PRIVATE_KEY, 또는 PUBLIC_KEY 의 어떤 것인가
반환값:
랩 해제된 열쇠
예외:
NoSuchAlgorithmException - 인스톨 되고 있는 어느 프로바이더도 wrappedKeyAlgorithmwrappedKeyType 타입의 열쇠를 작성할 수 없는 경우
InvalidKeyException - wrappedKeywrappedKeyAlgorithmwrappedKeyType 타입의 랩 된 열쇠를 나타내지 않는 경우

engineGetKeySize

protected int engineGetKeySize(Key  key)
                        throws InvalidKeyException 
지정된 열쇠 객체의 열쇠 사이즈를 비트 단위로 돌려줍니다.  

이 구상 메소드는, 사전에 정의된 이 abstract 클래스에 추가된 것입니다. 프로바이더에 의해 오버라이드(override) 되지 않는 경우는,UnsupportedOperationException 를 throw 합니다.

파라미터:
key - 열쇠 객체
반환값:
지정된 열쇠 객체의 열쇠 사이즈
예외:
InvalidKeyException - key 가 무효인 경우

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 도 참조해 주세요.