keytool способен генерировать секретный ключ начиная с Java 6 с помощью команды -genseckey .Вот выдержка из документации по Java 6 keytool :
-genseckey {-alias alias} {-keyalg keyalg}
{-keysize keysize} [-keypass keypass]
{-storetype storetype} {-keystore keystore}
[-storepass storepass]
{-providerClass provider_class_name {-providerArg provider_arg}}
{-v} {-protected} {-Jjavaoption}
Создает секретный ключ и сохраняет его в новом KeyStore.SecretKeyEntry
, указанном псевдоним .
keyalg указывает алгоритм, который будет использоваться для генерации секретного ключа, а keysize указывает размер генерируемого ключа. keypass - пароль, используемый для защиты секретного ключа.Если пароль не указан, пользователю предлагается его ввести.Если вы нажмете RETURN в приглашении, пароль ключа будет установлен на тот же пароль, который использовался для хранилища ключей. keypass должен содержать не менее 6 символов.
Таким образом, следующая команда сгенерирует новый 128-битный ключ AES
keytool -genseckey -alias mykey -keyalg AES -keysize 128 \
-storetype jceks -keystore mykeystore.jks
Команда keytool
содержит ошибку опечатки, которая скрывает справочную информацию о -genseckey
:
% keytool -help
[...]
-genkeypair [-v] [-protected]
[-alias <alias>]
[-keyalg <keyalg>] [-keysize <taille_clé>]
[-sigalg <sigalg>] [-dname <nomd>]
[-validity <joursVal>] [-keypass <mot_passe_clé>]
[-keystore <keystore>] [-storepass <mot_passe_store>]
[-storetype <storetype>] [-providername <name>]
[-providerclass <provider_class_name> [-providerarg <arg>]] ...
[-providerpath <pathlist>]
-genkeypair [-v] [-protected]
[-alias <alias>] [-keypass <keypass>]
[-keyalg <keyalg>] [-keysize <taille_clé>]
[-keystore <keystore>] [-storepass <mot_passe_store>]
[-storetype <storetype>] [-providername <name>]
[-providerclass <provider_class_name> [-providerarg <arg>]] ...
[-providerpath <pathlist>]
Команда -genkeypair
появляется дважды.На самом деле второе -genkeypair
должно читаться как -genseckey
.Вот почему я не заметил команду.
Я столкнулся с этой ошибкой опечатки в Java 1.6.0_26.Я проверил с последней доступной Java 6 (1.6.0_31), и у него та же проблема.Я также проверил последнюю версию Java 7, и проблема с документацией устранена:
% java -version
java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) Server VM (build 22.1-b02, mixed mode)
% keytool -help
[...]
-genkeypair Generates a key pair
-genseckey Generates a secret key
[...]