2009-05-19 8 views
7

Sun의 keytool 프로그램을 사용하여 암호화에 적합한 128 비트 키 쌍을 생성 할 수 있습니까? http://java.sun.com/javase/6/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator에서 사용할 수있는 알고리즘이 지원되지 않거나 512 비트보다 짧은 키를 허용하지 않는 것으로 보입니다.keytool을 사용하여 128 비트 키 생성

키 쌍은 ff와 함께 사용됩니다. 코드 : 출력 암호화 데이터가 저장되어 입력 평문 데이터를 판독한다 일부의 InputStream 인 것 인 일부의 OutputStream

Security.addProvider(new BouncyCastleProvider()); 

KeyStore keyStore = KeyStore.getInstance("PKCS12"); 

FileInputStream keyStoreSource = new FileInputStream("keystore"); 

try { 
    keyStore.load(keyStoreSource, "password".toCharArray()); 
} finally { 
    keyStoreSource.close(); 
} 

String alias = (String) keyStore.aliases().nextElement(); 
PrivateKey privateKey = (PrivateKey) keyStore.getKey(alias, "password".toCharArray()); 
X509Certificate certificate = (X509Certificate) keyStore.getCertificate(alias); 

CMSEnvelopedDataStreamGenerator generator = new CMSEnvelopedDataStreamGenerator(); 

generator.addKeyTransRecipient(certificate); 

OutputStream output2 = generator.open(output, CMSEnvelopedDataGenerator.AES128_CBC, BouncyCastleProvider.PROVIDER_NAME); 

try { 
    IOUtils.copy(input, output2); 
} finally { 
    output2.close(); 
    output.close(); 
} 

.

답변

0

512 비트 키 쌍이 생성 될 수 없다는 것이 합리적입니다. 공개 키 암호화는 동일한 보안 수준을 유지하려면 대칭 키 암호화보다 긴 키가 필요합니다. 공개 키 암호화에는 128 비트 키 쌍을 사용하지 않는 것이 좋습니다.

+0

다른 스토어 타입을 지정해야합니다. 나는 그 때 잘못된 길을 가고 있는가? –

+1

조금 더 자세히 설명해 주시겠습니까? –

+0

생성 된 키 쌍이 사용될 코드 스 니펫으로 질문을 업데이트했습니다. –

2

인증서는 공개 키 암호화에 사용되며 대칭 블록 암호 AES-128에 대한 암호화 키를 포함하지 않습니다. 대신 공개 키 암호화는 128 비트 AES 키를 암호화하거나 협상하는 데에만 사용되고 나머지 대화는 AES를 사용합니다.

128 비트 AES 키는 인증서가 아니며 암호 학적으로 강력한 난수 생성기의 128 비트이거나 PBKDF2과 같은 해시 알고리즘을 사용하는 암호 구로부터 파생됩니다. 이러한 비트를 얻는 방법은 응용 프로그램에 따라 다릅니다. SSL/TLS는 무작위 키를 협상해야하지만 하드 디스크 암호화 프로그램은 암호를 키로부터 추출합니다.

+0

생성 된 키 쌍이 사용될 코드 스 니펫으로 질문이 업데이트되었습니다. 바라건대, 나는 혼란을 없앴습니다. 하지만, 저는 암호 초보자입니다. :피 –

5

당신은 그냥 AES-128에 사용할 테스트 인증서를 생성하기 위해 찾고 있었다

keytool -genseckey -alias check2 -keyalg AES -keysize 128 -storepass changeit -storetype JCEKS -keystore ks.jck

관련 문제