2009-05-19 2 views
7

Есть ли способ генерировать 128-битную пару ключей, подходящую для шифрования с помощью программы Suntooltool? Кажется, что алгоритмы, доступные в http://java.sun.com/javase/6/docs/technotes/guides/security/StandardNames.html#KeyPairGenerator, либо не поддерживаются, либо не позволяют ключам короче 512 бит.Создание 128-битных ключей с keytool

Пара ключей будет использоваться с ff. фрагмент кода:

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

где выход некоторые OutputStream где зашифрованные данные будут сохранены и ввод некоторых InputStream, где будет читаться в данных открытом тексте.

ответ

0

Было бы разумно, что не может быть сгенерировано менее 512-битных пар ключей. Криптография с открытым ключом требует более длительного ключа, чем криптография с симметричным ключом, для обеспечения того же уровня безопасности. 128-битная пара ключей не рекомендуется для криптографии с открытым ключом.

+0

Я искал, чтобы создать тестовый сертификат для использования с AES-128. Неужели я так ошибаюсь? –

+1

Не могли бы вы более подробно объяснить, что вы хотите сделать? –

+0

Обновленный вопрос с фрагментом кода, в котором будет создана сгенерированная пара ключей. –

2

Сертификаты используются для криптографии с открытым ключом и не содержат ключей шифрования для симметричного блочного шифрования AES-128. Вместо этого криптография с открытым ключом используется только для шифрования или согласования 128-битного ключа AES, а остальная часть разговора использует AES.

128-разрядный ключ AES не является сертификатом, он всего лишь 128 бит от криптографически сильного генератора случайных чисел или получен из кодовой фразы с использованием алгоритма хеширования, такого как PBKDF2. Как вы получите эти биты будет зависеть от вашего приложения. SSL/TLS должен согласовывать случайный ключ, но программа шифрования жесткого диска выводит ключ из кодовой фразы.

+0

Обновленный вопрос с фрагментом кода, в котором будет создана сгенерированная пара ключей. Надеюсь, я смутился. Но, да, я крипто-новичок. :П –

5

Вам просто нужно указать различные storetype

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

Смежные вопросы