|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjavax.crypto.CipherSpi
public abstract class CipherSpi
이 클래스는,Cipher
클래스의 Service Provider Interface (SPI)를 정의합니다. 특정의 암호 알고리즘의 구현을 제공하는 각 암호화 서비스 프로바이더는, 이 클래스의 모든 추상 메소드를 구현할 필요가 있습니다.
이 CipherSpi
클래스의 인스턴스를 캡슐화하는 Cipher
의 인스턴스를 생성하려면 , 어플리케이션은 Cipher
엔진 클래스의 getInstance
팩토리 메소드의 1 개를 호출해, 요구된 「변환」을 지정합니다. 어플리케이션은, 필요에 따라서, 프로바이더의 이름을 지정할 수도 있습니다.
「변환」이란, 출력을 생성하기 위해서, 지정된 입력에 대해서 실행하는 조작 (또는 일련의 조작)을 기술하는 캐릭터 라인입니다. 변환에는 항상 암호화 알고리즘명 (DES 등)이 포함되어 있어 피드백 모드와 패딩 방식이 나중에 계속되는 일이 있습니다.
변환은, 다음의 서식에서 기술됩니다.
후자의 경우, 모드와 패딩 방식에 대해서는 프로바이더 고유의 디폴트 값가 사용됩니다. 유효한 변환의 예를 다음에 나타냅니다.
Cipher c = Cipher.getInstance("DES/CBC/PKCS5Padding");
프로바이더는, 「알고리즘/모드/패딩」의 각 편성에 대해서 개별의 클래스를 제공하든가, 혹은 「알고리즘」, 「알고리즘/모드」, 또는 「알고리즘//패딩」 (이중 slash에 주의)에 대응하는 서브 변환을 나타내는 것보다 총칭 클래스를 제공할 수가 있습니다. 총칭 클래스를 제공하는 경우, 요구된 모드나 패딩은, 프로바이더의 CipherSpi
의 서브 클래스의 engineSetMode
및 engineSetPadding
메소드를 호출하는,Cipher
의 getInstance
메소드에 의해 자동적으로 설정됩니다.
프로바이더의 마스터 클래스내의 Cipher
프로퍼티의 형식은, 다음의 어떤 것인가가 됩니다.
// provider's subclass of "CipherSpi" implements "algName" with
// pluggable mode and padding
Cipher.
algName
// provider's subclass of "CipherSpi" implements "algName" in the
// specified "mode", with pluggable padding
Cipher.
algName/mode
// provider's subclass of "CipherSpi" implements "algName" with the
// specified "padding", with pluggable mode
Cipher.
algName//padding
// provider's subclass of "CipherSpi" implements "algName" with the
// specified "mode" and "padding"
Cipher.
algName/mode/padding
예를 들어, 프로바이더는 DES/ECB/PKCS5Padding, DES/CBC/PKCS5Padding, DES/CFB/PKCS5Padding, 한층 더 DES/OFB/PKCS5Padding 를 각각 구현하는 CipherSpi
의 서브 클래스를 제공 가능합니다. 이 프로바이더는, 마스터 클래스내에 다음의 Cipher
프로퍼티을 보관 유지합니다.
Cipher.
DES/ECB/PKCS5Padding
Cipher.
DES/CBC/PKCS5Padding
Cipher.
DES/CFB/PKCS5Padding
Cipher.
DES/OFB/PKCS5Padding
다른 프로바이더는, 상기의 각 모드에 대응한 클래스 (ECB, CBC, CFB, 및 OFB 용으로 각각 1 개의 클래스)를 구현할 수 있습니다. 또, PKCS5Padding 에 대응하는 1 개의 클래스, 및 CipherSpi
로부터 서브 클래스화 된 총칭 DES 클래스도 구현할 수 있습니다. 이 프로바이더는, 마스터 클래스내에 다음의 Cipher
프로퍼티을 보관 유지합니다.
Cipher.
DES
「algorithm」형식의 변환의 경우,Cipher
엔진 클래스의 getInstance
팩토리 메소드는, 다음의 규칙에 따라 프로바이더의 CipherSpi
구현을 인스턴스화합니다.
CipherSpi
의 서브 클래스를 등록이 끝난 상태인가 어떤가를 체크한다. 등록을 마친 경우, 이 클래스를 인스턴스화해, 이 모드 및 패딩 방식의 디폴트 값 (프로바이더에 의해 제공)를 사용 가능하게 합니다.
미등록의 경우, 예외 NoSuchAlgorithmException
를 throw 합니다.
「algorithm/mode/padding」형식의 변환의 경우,Cipher
엔진 클래스의 getInstance
팩토리 메소드는, 다음의 규칙에 따라 프로바이더의 CipherSpi
구현을 인스턴스화합니다.
CipherSpi
의 서브 클래스를 등록이 끝난 상태인가 어떤가를 체크한다. 등록을 마친 경우, 이 클래스를 인스턴스화합니다.
미등록의 경우, 다음의 스텝에 진행됩니다.
CipherSpi
의 서브 클래스를 등록이 끝난 상태인가 어떤가를 체크한다. 등록을 마친 경우, 이 클래스를 인스턴스화하고 나서, 신규 인스턴스에 대해 engineSetPadding(padding)
를 호출합니다.
미등록의 경우, 다음의 스텝에 진행됩니다.
CipherSpi
의 서브 클래스를 등록이 끝난 상태인가 어떤가를 체크한다. 등록을 마친 경우, 이 클래스를 인스턴스화하고 나서, 신규 인스턴스에 대해 engineSetMode(mode)
를 호출합니다.
미등록의 경우, 다음의 스텝에 진행됩니다.
CipherSpi
의 서브 클래스를 등록이 끝난 상태인가 어떤가를 체크한다. 등록을 마친 경우, 이 클래스를 인스턴스화하고 나서, 신규 인스턴스에 대해 engineSetMode(mode)
및 engineSetPadding(padding)
를 호출합니다.
미등록의 경우, 예외 NoSuchAlgorithmException
를 throw 합니다.
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 |
생성자 의 상세 |
---|
public CipherSpi()
메소드의 상세 |
---|
protected abstract void engineSetMode(String mode) throws NoSuchAlgorithmException
mode
- 암호화 모드
NoSuchAlgorithmException
- 요구된 암호화 모드가 존재하지 않는 경우protected abstract void engineSetPadding(String padding) throws NoSuchPaddingException
padding
- 패딩 기구
NoSuchPaddingException
- 요구된 패딩 기구가 존재하지 않는 경우protected abstract int engineGetBlockSize()
protected abstract int engineGetOutputSize(int inputLen)
inputLen
(바이트 단위)를 지정해, 다음의 update
또는 doFinal
조작의 결과를 보관 유지하기 위해서 필요한 출력 버퍼의 길이를 바이트수로 돌려줍니다.
이 호출에서는, 이전의 update
호출의 처리되어 있지 않은 (버퍼에 있다) 데이터를 고려해, 패딩 합니다.
다음의 update
또는 doFinal
호출의 실제의 출력 길이은, 이 메소드가 돌려주는 길이보다 작은 일이 있습니다.
inputLen
- 입력 길이 (바이트 단위)
protected abstract byte[] engineGetIV()
이것은, IV 가 사용자 지정의 패스 프레이즈로부터 파생하는 패스워드 베이스의 암호화 또는 복호화의 문맥에 대해 도움이 됩니다.
protected abstract AlgorithmParameters engineGetParameters()
반환되는 파라미터는, 이 암호를 초기화하는데 사용한 것과 같은 경우가 있습니다. 또는, 반환되는 파라미터에는, 이 암호에 알고리즘 파라미터가 필요해, 한편 알고리즘 파라미터로 초기화되지 않았던 경우에, 기본이 되는 암호 구현으로 사용되는 디폴트와 랜덤의 파라미터치의 편성이 포함되는 일도 있습니다.
protected abstract void engineInit(int opmode, Key key, SecureRandom random) throws InvalidKeyException
이 암호는,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
- 지정된 열쇠가 이 암호의 초기화에 올바르지 않은 경우, 또는 이 암호가 복호화용으로 초기화되어 지정된 열쇠로부터 판정할 수가 없는 알고리즘 파라미터를 필요로 하는 경우protected abstract void engineInit(int opmode, Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException , InvalidAlgorithmParameterException
이 암호는,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 의 경우protected abstract void engineInit(int opmode, Key key, AlgorithmParameters params, SecureRandom random) throws InvalidKeyException , InvalidAlgorithmParameterException
이 암호는,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 의 경우protected abstract byte[] engineUpdate(byte[] input, int inputOffset, int inputLen)
inputOffset
로부터 시작되는,input
버퍼내의 최초의 inputLen
바이트가 처리되어 결과가 새로운 버퍼에 포함됩니다.
input
- 입력 버퍼inputOffset
- 입력을 개시하는 input
내의 오프셋(offset)inputLen
- 입력 길이
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
- 지정된 출력 버퍼가 너무 작아 결과를 보관 유지할 수 없는 경우protected int engineUpdate(ByteBuffer input, ByteBuffer output) throws ShortBufferException
input.position()
로부터 시작되는 모든 input.remaining()
바이트가 처리됩니다. 결과는 출력 버퍼에 포함됩니다. 종료시에, 입력 버퍼의 위치는 리밋트에 동일해집니다만, 리밋트는 변경되지 않습니다. 출력 버퍼의 위치는 n 만 증가합니다. n 는, 이 메소드가 돌려주는 값입니다. 출력 버퍼의 리밋트는 변경되지 않습니다.
output.remaining()
바이트가 결과를 보관 유지하는데 불충분한 경우는,ShortBufferException
가 throw 됩니다.
ByteBuffer 를 바이트 배열보다 효율적으로 처리할 수 있는 경우, 이 메소드를 서브 클래스에서 오버라이드(override) 하는 것을 검토해 주세요.
input
- 입력 ByteBufferoutput
- 출력 ByteByffer
output
에 포함된 바이트수
ShortBufferException
- 출력 버퍼내에 남아 있는 용량이 부족한 경우
NullPointerException
- 어느 쪽의 파라미터도 null
의 경우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
- 이 암호가 복호화 모드이며, 패딩 (또는 패딩 해제)이 요구되었지만, 복호화 된 데이터가 적절한 패딩 바이트로 바인드 되지 않는 경우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
- 이 암호가 복호화 모드이며, 패딩 (또는 패딩 해제)이 요구되었지만, 복호화 된 데이터가 적절한 패딩 바이트로 바인드 되지 않는 경우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
- 입력 ByteBufferoutput
- 출력 ByteByffer
output
에 포함된 바이트수
IllegalBlockSizeException
- 이 암호가 블록 암호이며, 패딩이 요구되지 않고 (암호화 모드의 경우만), 이 암호로 처리된 데이터의 입력 길이의 합계가 블록 사이즈의 배수가 아닌 경우. 또는, 이 암호화 알고리즘이, 지정된 입력 데이터를 처리할 수 없는 경우
ShortBufferException
- 출력 버퍼내에 남아 있는 용량이 부족한 경우
BadPaddingException
- 이 암호가 복호화 모드이며, 패딩 (또는 패딩 해제)이 요구되었지만, 복호화 된 데이터가 적절한 패딩 바이트로 바인드 되지 않는 경우
NullPointerException
- 어느 쪽의 파라미터도 null
의 경우protected byte[] engineWrap(Key key) throws IllegalBlockSizeException , InvalidKeyException
이 구상 메소드는, 사전에 정의된 이 abstract 클래스에 추가된 것입니다. 하위 호환성을 위해서(때문에), 추상 메소드에는 할 수 없습니다. 열쇠를 랩 하기 위해서, 프로바이더에 의해 오버라이드(override) 되는 경우가 있습니다. 그러한 오버라이드(override)를 실시하면, 지정된 열쇠를 랩 할 수 없는 경우에, IllegalBlockSizeException 또는 InvalidKeyException (지정된 환경하)가 throw 됩니다. 이 메소드가 오버라이드(override) 되지 않는 경우는, 항상 UnsupportedOperationException 가 throw 됩니다.
key
- 랩 되는 열쇠
IllegalBlockSizeException
- 이 암호가 블록 암호이며, 패딩이 요구되지 않고, 랩 되는 열쇠의 인코딩의 길이가 블록 사이즈의 배수가 아닌 경우
InvalidKeyException
- 이 암호를 사용해 열쇠를 랩 하는 것이 불가능한가 안전하지 않은 경우 (하드웨어 보호된 열쇠가 소프트웨어만의 암호에게 건네지는 경우 등)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
- 인스톨 되고 있는 어느 프로바이더도 wrappedKeyAlgorithm
의 wrappedKeyType
타입의 열쇠를 작성할 수 없는 경우
InvalidKeyException
- wrappedKey
가 wrappedKeyAlgorithm
의 wrappedKeyType
타입의 랩 된 열쇠를 나타내지 않는 경우protected int engineGetKeySize(Key key) throws InvalidKeyException
이 구상 메소드는, 사전에 정의된 이 abstract 클래스에 추가된 것입니다. 프로바이더에 의해 오버라이드(override) 되지 않는 경우는,UnsupportedOperationException
를 throw 합니다.
key
- 열쇠 객체
InvalidKeyException
- key
가 무효인 경우
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.