2009-05-19 16 views
7

Gibt es eine Möglichkeit, ein 128-Bit-Schlüsselpaar zu generieren, das für die Verschlüsselung mit dem Keytool-Programm von Sun geeignet ist? Es scheint, dass die Algorithmen, die in http://java.sun.com/javase/6/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator verfügbar sind, entweder nicht unterstützt werden oder keine Schlüssel kürzer als 512 Bits erlauben.Generieren von 128-Bit-Schlüsseln mit Keytool

Das Schlüsselpaar wird mit dem ff verwendet. Code-Schnipsel:

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(); 
} 

wo Ausgabe einiger Output ist, wo die verschlüsselten Daten werden gespeichert und eingegeben werden einige Input wo die Klartextdaten gelesen werden.

Antwort

0

Es wäre sinnvoll, dass Schlüsselpaare mit weniger als 512 Bit nicht generiert werden können. Die Kryptographie mit öffentlichen Schlüsseln benötigt einen längeren Schlüssel als die Kryptographie mit symmetrischen Schlüsseln, um das gleiche Sicherheitsniveau aufrechtzuerhalten. Ein 128-Bit-Schlüsselpaar wird für die Kryptografie mit öffentlichen Schlüsseln nicht empfohlen.

+0

ich angeben, suchte einen Test cert zu erzeugen mit AES-128 zu verwenden. Gehe ich dann falsch herum? –

+1

Können Sie etwas ausführlicher erklären, was Sie erreichen möchten? –

+0

Aktualisierte Frage mit Codeschnipsel, in der das erzeugte Schlüsselpaar verwendet wird. –

2

Zertifikate werden für die Kryptografie mit öffentlichen Schlüsseln verwendet und enthalten keine Verschlüsselungsschlüssel für die symmetrische Blockchiffre AES-128. Stattdessen wird die Kryptografie mit öffentlichen Schlüsseln nur zum Verschlüsseln oder Aushandeln des 128-Bit-AES-Schlüssels verwendet und der Rest der Konversation verwendet AES. Der 128-Bit-AES-Schlüssel ist kein Zertifikat, sondern nur 128 Bit von einem kryptografisch starken Zufallszahlengenerator oder von einer Passphrase abgeleitet, die einen Hash-Algorithmus wie PBKDF2 verwendet. Wie Sie diese Bits erhalten, hängt von Ihrer Anwendung ab. SSL/TLS muss einen zufälligen Schlüssel aushandeln, aber ein Festplattenverschlüsselungsprogramm würde den Schlüssel aus einer Passphrase ableiten.

+0

Aktualisierte Frage mit Codeschnipsel, in der das erzeugte Schlüsselpaar verwendet wird. Hoffentlich habe ich jede Verwirrung beseitigt. Aber, ja, ich bin ein Krypto-Anfänger. : P –

5

Sie müssen nur verschiedene storetype

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

Verwandte Themen